facebook getLogoutUrl返回一个access_token = 0的URL,点击后重定向到Facebook用户的主页

时间:2013-03-30 19:17:22

标签: php facebook facebook-graph-api facebook-php-sdk

我正在将Facebook与我的网站集成,并且我添加了一个Logout按钮,其URL取自:

$facebook->getLogoutUrl(array('next' => 'http://mydomain.com/logout.php'));

问题是永远不会调用logout.php。相反,单击“注销”按钮,它将重定向到登录用户的Facebook主页。它不会将用户从Facebook中注销,也不会调用我的next URL。

我注意到getLogoutURL()生成的网址如下:

https://www.facebook.com/logout.php?next=http://mydomain.com/logout.php&access_token=0

请注意, access_token = 0 。该值不应为零吗?这是我能想到的唯一可能导致问题的原因。

我已将FB应用的网站网址设为http://mydomain.com。在本地测试时,我还编辑了hosts文件。我也google了很多,我还没有找到解决方案。唯一有效的方法是使用onclick在我的退出按钮中添加FB.logout()。但我需要使用PHP。

关于注销网址无法正常工作的任何想法?

5 个答案:

答案 0 :(得分:5)

好的,我已经通过创建自己的退出网址并添加访问令牌来解决这个问题

$logoutUrl = 'https://www.facebook.com/logout.php?next=http://mydomain.com/logout.php&access_token=' . $facebook->getAccessToken();

答案 1 :(得分:4)

我希望你找到了解决方案!但如果没有,请尝试使用以下代码。它对我有用!

$facebook->getLogoutUrl(array('next' =>'http://example.com/logout.php', 'access_token'=>$facebook->getAccessToken()));`

如果您查看官方文档,您会看到它没有说明在参数数组中设置访问令牌选项,但它确实有效!祝你好运!!

答案 2 :(得分:2)

问题是你需要在请求注销网址之前调用getAccessToken。

$facebook->getAccessToken();

不需要将其作为getLogoutURL参数在内部调用。只需在之前调用它一行:

$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();
$logoutUrl = $facebook->getLogoutUrl();

答案 3 :(得分:1)

我也有同样的问题(access_token = 0),但后来我意识到我在调用getLogoutURL()之前清除了Facebook的cookie。如果首先获得getLogoutURL()结果,则access_token不应为零。

答案 4 :(得分:0)

在v5.0.0中,getLogoutUrl()的第一个参数是Facebook用户会话的访问令牌。

public string getLogoutUrl(string $accessToken, string $next, string $separator = '&')

通过它,Facebook将把它添加到你的"下一个" URL。

Source