facebook php-sdk没有退出

时间:2011-12-26 05:14:39

标签: php facebook facebook-php-sdk

我很难让这个工作。我使用以下命令生成注销URL:

$logout = "https://www.facebook.com/logout.php?next=" . urlencode('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']) . "&access_token=" . $facebook->getAccessToken();

哪个生成正确的(使用最后一个版本)url:

https://www.facebook.com/logout.php?next=http%3A%2F%2F...&access_token=AA....ZD

然而,这实际上并没有将用户注销。我尝试使用

$facebook->getLogoutUrl(array('next' => 'myurl')) 

生成几乎相同的网址。这也行不通。我迷失了为什么它没有记录用户。我实际上尝试手动将地址放入地址栏,但它将我重定向到Facebook主页。

3 个答案:

答案 0 :(得分:3)

facebook php sdk使用php会话来保存您登录的令牌。要清除它,您可以破坏会话。

的index.php:

<a href="logout.php">Log out</a>

logout.php

$facebook = new Facebook(array('appId'  => FB_APP_ID, 'secret' => FB_APP_SECRET, 'cookie' => true));
$facebook->destroySession();
header('location: index.php');

FB_APP_ID和FB_SECRET是我的特定应用信息。替换为您自己的。

答案 1 :(得分:2)

如果您在使用Facebook PHP SDK时请求 offline_access 权限(有时甚至没有它),则会使默认注销功能无法正常运行。为了解决这个问题,以下为我工作:

//change your logout url to 
$logoutUrl = $facebook->getLogoutUrl(array( 'next' => ($fbconfig['baseurl'].'logout.php') ));

//on logout page
setcookie('fbs_'.$facebook->getAppId(), '', time()-100, '/', 'domain.com');
session_destroy();
header('Location: /');

希望有所帮助

答案 2 :(得分:0)

可能是因为PHP会话和会话cookie仍然完好无损。我写了a short article试图揭开FB登录/注销的神秘面纱。