退出Facebook会导致JS SDK出现奇怪的行为

时间:2011-08-26 15:12:49

标签: facebook facebook-graph-api

我正在使用Facebook Javascript SDK对我网站上的用户进行身份验证。这是我的情况,我遇到了麻烦。

如果我在我的网站和Facebook上登录,那么我在Facebook上注销似乎FB.getLoginStatus没有被调用。如果我点击我的登录按钮(即调用FB.login),则firebug会抛出错误"FB.login() called when user is already connected."

除此之外,如果我尝试获取facebook用户,则不返回任何内容。

所以简而言之,我无法获得Facebook用户,但我也无法致电FB.login,所以我什么都没有。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

如果某人在facebook.com上结束他们的会话,他们在您网站上的会话仍然存在 - 但如果您尝试使用该会话获取或发布数据到Facebook,则可能会失败。如果有人从facebook.com退出facebook,你可以通过订阅auth.sessionChange或auth.logout来处理这个问题(https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/)

FB.Event.subscribe('auth.sessionChange', function(response) {
  alert('The status of the session is: ' + response.status);
});

如果您发现有人在使用您的网站时直接退出了Facebook,您可以使用

从会话中注销
FB.logout()

发生这种情况后,您的FB.login()将不再提供该错误。错误是说你正在尝试运行FB.login(),当你已经在该页面上有一个会话时(因为记住会话只在facebook.com上清除,而不是在你的网站上清除)