2011-12-26 127 views
0

我很难让这个工作。我使用以下方法来产生注销网址:facebook php-sdk没有注销

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

产生正确的(与最后一个版本的工作)网址:

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

然而,这实际上并不注销用户。我试过使用

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

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

回答

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: /'); 

希望它可以帮助

+0

感谢sudhir在注销页面上的setcookie工作得很好。这是我为facebook注销网址工作的唯一修复程序。 – peter 2012-06-14 04:48:00

0

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

+0

不是很容易找到,是吗? – Sven 2012-10-19 23:11:40

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是我的具体应用程序的信息。用你自己的替换。