实时获取Facebook上的用户登录状态

在该问题中,当用户注销Facebook时,我试图获取回叫事件。但是,由于它还没有适当的答案,因此我必须尝试另一种方法。我尝试通过javascript轮询以获取用户的登录状态,如下所示:

        function checkLogin()

{

alert("in");

FB.getLoginStatus(function(response) {

if (response.status == "connected") {

// logged in and connected user, someone you know

alert("ok - 5 seconds has passed");

} else {

// no user session available, someone you dont know

alert("not ok");

}

});

t=checkLogin("timedCount()",5000);

}

。在那之后,似乎结果被缓存了,尽管用户通过浏览器中的另一个选项卡 静默

注销,但我不断收到“已连接”作为响应。

这不好,因为那时Facebook弹出一个对话框,要求用户登录。但是,如果用户取消它,他仍然可以使用我的应用程序(因为与我的应用程序服务器的会话尚未过期!)。

在文档中,FB开发人员说:

当您调用FB.getLoginStatus时,可能会向www.facebook.com发出HTTP请求以检查用户的当前状态。但是,如果在此浏览器会话期间已经调用了FB.getLoginStatus,并且该会话已保留在cookie中,则可能不需要对facebook.com的HTTP请求

所以我认为这种影响是由缓存引起的。我不知道为什么Facebook会这样做。

有人知道解决此问题的方法吗?

谢谢你的帮助,

黄朗

回答:

最终,我花了很长时间,直到我的一位同事解决了这个问题。

解决方案是我们需要在之前FB.init()再次cookie:false调用getLoginStatus。这将删除cookie并获取新信息。

FB.init({ 

appId:'${appId}',

cookie: false,

status: true,

xfbml: true

});

FB.getLoginStatus(function (response) {

if (response.session) {

alert("here");

}

});

以上是 实时获取Facebook上的用户登录状态 的全部内容, 来源链接: utcz.com/qa/418270.html

回到顶部