实时获取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