5

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

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

问题是logout.php从未调用过。相反,在单击注销按钮时,它会重定向到登录用户的 Facebook 主页。它不会让用户退出 Facebook,也不会调用我的nextURL。

我注意到生成的 URLgetLogoutURL()如下所示:

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

注意有一个access_token=0。该值不应该为零吗?这是我能想到的唯一可能导致问题的事情。

我已经将我的 FB 应用程序的站点 URL 设置为http://mydomain.com. 在本地测试时,我还编辑了我的hosts文件。我也google了很多,我还没有找到解决方案。唯一有效的是onclick使用FB.logout(). 但我需要使用 PHP。

关于为什么注销 URL 不起作用的任何想法?

4

5 回答 5

5

好的,我通过创建自己的注销 URL 并添加访问令牌解决了这个问题

$logoutUrl = 'https://www.facebook.com/logout.php?next=http://mydomain.com/logout.php&access_token=' . $facebook->getAccessToken();
于 2013-03-30T19:38:48.190 回答
4

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

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

If you check out the official documentation you'll see it says nothing about setting the access token option in the parameter array but it really works! Good Luck!!

于 2013-05-16T04:32:40.210 回答
2

The problem is that you need to call getAccessToken BEFORE ask for the logout url.

$facebook->getAccessToken();

Don't need to call it inside as a getLogoutURL parameter. Just call it one line before:

$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();
$logoutUrl = $facebook->getLogoutUrl();
于 2014-01-14T18:09:57.123 回答
1

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

于 2013-05-15T20:23:18.407 回答
0

In v5.0.0 the first parameter of getLogoutUrl() is the access token of the Facebook user's session.

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

Pass it and Facebook will add it to your "next" URL.

Source

于 2018-03-20T08:09:15.403 回答