$facebook->getUser() ВСЕГДА Возвращать идентификатор - не удается выйти
По какой-то причине, независимо от того, что я делаю, это всегда возвращает действительный идентификатор и информацию Facebook. Чтобы выйти из системы, я использую Facebook.Logout, перенаправляя на страницу, где я очищаю ВСЕ куки, включая "fbsr_". Я даже вышел из Facebook вручную, и он все еще возвращает действительный идентификатор! Это для приложения Facebook Connect. Вот мой код приложения,
$uid = $facebook->getUser();
if ($uid) {
try {
$me = $facebook->api('/'+$uid);
} catch (FacebookApiException $e) {
echo $e;
error_log($e);
$uid = NULL;
}
}
Тогда мой код выхода из PHP,
$app_id="XXXX";
session_name('QEW');
session_start();
session_regenerate_id(true);
session_unset();
session_destroy();
$facebook->destroySession();
if (isset($_COOKIE['fbsr_' . $app_id]))
{
setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/");
setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/");
unset($_COOKIE['fbsr_' . $app_id]);
unset($_COOKIE['PHPSESSID']);
}
РЕДАКТИРОВАТЬ мой код Javascript,
window.fbAsyncInit = function() {
FB.init({
appId:'XXX', cookie:true,
status:true, xfbml:true, oauth:true,
channelURL:'~~.com/channel.html'
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function login(io)
{
FB.getLoginStatus(function(response)
{
if(response.status == 'connected')
{
if(io==1)
{
FB.login(function(response)
{
if (response.authResponse)
{
cU(response.authResponse.userID);
}
},{scope:'email'});
}
else
{
FB.logout(function(response){});
window.location="./logout.php";
}
}
else
{
FB.login(function(response)
{
if (response.authResponse)
{
cU(response.authResponse.userID);
}
},{scope:'email'});
}
});
}
Затем, после выхода из системы, я перехожу на другую страницу, которая снова вызывает первый блок кода, и он просто заполняет файлы cookie, потому что возвращает действительный идентификатор пользователя. Как я могу это исправить? Спасибо
1 ответ
Вы удаляете cookie по php. После этого по следующему запросу JS API восстанавливает его.
Единственный и правильный способ выхода из Facebook - перенаправить пользователя на URL выхода:
echo $facebook->getLogoutUrl();
или то же самое из клиентского JS API FB.logout ();