在Facebook上实时获取用户登录状态
Get user login status on Facebook by real time
这个问题与我的另一个问题有关:如何知道如果用户退出Facebook, FB.Event.Subscribe不起作用
在这个问题中,我试图在用户注销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查看用户的当前状态。然而,如果FB。在此浏览器会话期间已经调用了getLoginStatus,并且会话已被持久化在cookie中,HTTP请求到可能不需要Facebook.com
所以我认为这个效果是缓存造成的。我想知道为什么Facebook这样做。
有人知道解决这个问题的方法吗?
谢谢你的帮助,
黄平君长
我花了很长时间,直到我的一个同事最终解决了这个问题。
解决方案是我们需要再次调用FB.init()
,在调用getLoginStatus
之前先调用cookie:false
。这将删除cookie并获得新信息。
FB.init({
appId:'${appId}',
cookie: false,
status: true,
xfbml: true
});
FB.getLoginStatus(function (response) {
if (response.session) {
alert("here");
}
});
相关文章:
- 使用jQuery File Upload实现所需的用户登录
- 用户登录时的流星事件
- 如何在 Angular 中将锚标记与模态链接,以便用户登录
- 如何让登录按钮在用户登录时更改为图标
- 在单个登录页面中使用多个用户登录的 JSON 登录
- 用户登录时重新加载
- 如果用户登录不起作用,则运行脚本
- Meteor用户登录
- 一旦用户登录JSF页面,就禁用浏览器返回按钮
- 每次用户登录javascript时转换totaltime
- 正在从facebook检索用户登录名-无需登录
- 脸书:查询公共活动,无需用户登录
- 如何在用户登录后从布局页面中删除登录按钮
- 如果用户登录了Backbone,JavaScript,如何显示/隐藏表单
- 通过 JS 和 ajax 验证用户登录
- 用户登录后,将立即提交用户表单
- 保持用户登录,在反应通量应用程序中
- 条件翡翠模板,用户登录
- 护照.js用户登录和身份验证
- 用户登录后如何调用 socket.io 授权