gpt4 book ai didi

java - 实时获取Facebook用户登录状态

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:09 33 4
gpt4 key购买 nike

这个问题与我的另一个问题相关:How to know if a user log out of Facebook, FB.Event.Subscribe not work

在这个问题中,我尝试在用户注销 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 会弹出一个对话框,要求用户登录。但如果用户取消它,他仍然可以使用我的应用程序(因为他与我的应用程序服务器的 session 尚未过期!)。

document ,FB 开发人员表示:

When you invoke FB.getLoginStatus, an HTTP request may be made to www.facebook.com to check the current status of the user. However, if FB.getLoginStatus has already been called during this browser session, and a session has been persisted within a cookie, an HTTP request to facebook.com may not be needed

所以我认为这个效果是缓存造成的。我想知道为什么 Facebook 这样做。

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

感谢您的帮助,

黄龙

最佳答案

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

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

FB.init({ 
appId:'${appId}',
cookie: false,
status: true,
xfbml: true
});

FB.getLoginStatus(function (response) {
if (response.session) {
alert("here");
}
});

关于java - 实时获取Facebook用户登录状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035687/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com