我正在将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。
关于注销网址无法正常工作的任何想法?
答案 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。