1

我正在使用 FB PHP SDK 来获取用户的 FB 访问令牌等。

在我完成所有信息后,我试图注销用户,但它不起作用。出于调试目的,我这样做:

$facebook = new Facebook(array(
        'appId' => FB_APP_ID,
        'secret' => FB_SECRET
    ));
$params = array( 'next' => site_url('welcome/logout') );
$link = $facebook->getLogoutUrl($params); // $params is optional. 
echo $link;

这给了我一个这样的链接:

https://www.facebook.com/logout.php?next=http%3A%2F%2Fexample.com%2Fwelcome%2Flogout&access_token=xxxxxxxx

如果我将浏览器指向该 URL,我会被重定向回我的回调 URL,但之后,如果我转到 Facebook.com,我仍然处于登录状态。

我究竟做错了什么?

我尝试使用 JS SDK 但这不起作用,因为其他一切都在服务器端完成(使用 PHP SDK)。因此,当我FB.logout()使用 JS SDK 调用时,它会显示Logout called without access token.

编辑

我想在继续之前,有人可以确认一下:当我按照注销 URL 操作时,它实际上是让我退出 Facebook,还是只是结束我的应用程序和用户之间的会话?

如果是这样,有没有办法从 Facebook 完全注销用户?(我猜没有)。

4

1 回答 1

1

RE:使用 JS SDK,您可以同时使用 JS SDK 和 PHP SDK,现在可以互换使用(并且已经有一年左右的时间了)。所以如果JS方法更适合你,我建议你试试。

重新“编辑”:是的,它完全让你退出 Facebook。

现在是开场的功能问题。您所描述的场景发生在开发过程中,但我从未明确指出原因。我认为这与存储在错误域中的 cookie 有关(facebook 存储它认为是基本域的内容,如果你摆弄基本域,或者在同一个基本域上有两个应用程序,它会在一个捻)。

清除 cookie 可以解决问题。然后确保您没有在 Facebook 的设置中操纵域,希望它不会再次出现。(我说希望是因为我从来没有准确指出触发器,但是一旦开发完成,我从来没有在稳定的应用程序上发生过这种情况。)

于 2012-06-22T07:53:06.000 回答