这让我发疯。用户登录到我的 Facebook 应用程序,做了一些事情。然后转到 Facebook 并注销。我有一个小计时器,每隔一段时间就会调用 FB.getLoginStatus() 来查看用户是否仍然登录。但是每当调用 FB.getLoginStatus() 时,它都会返回一个带有 session 对象的响应。什么鬼?它不应该返回未定义/未知吗?
我正在使用对 Facebook evar 的绝对最基本的调用:
FB.init({
appId: 'MY APP ID',
cookies: false,
status: true,
xfbml: false
});
FB.getLoginStatus(function (response) {
if (response.session) {
console.info("Session exists");
} else {
console.info("Session empty");
}
});
setInterval(function () {
FB.getLoginStatus(function (response) {
if (response.session) {
console.info("Session exists");
} else {
console.info("Session empty");
}
});
}, 10000);
我检查并仔细检查了使用允许请求的权限。我只要求电子邮件和短信。那么……有什么建议吗?
最佳答案
不要以艰难的方式去做。这种情况有一个简单的解决方案,只需在 getLoginStatus 方法中添加一个“true”语句作为第二个参数:
FB.getLoginStatus(function (response) {
if (response === undefined || response.status === 'connected') {
// Do something after logout
}
}, true);
请注意,每次调用此函数都会使您的应用程序转到 Facebook 的服务器,并可能给您带来相当大的网络负载,具体取决于您的实现方式。希望这可以帮助!
关于facebook - FB.getLoginStatus 即使在用户退出 Facebook 后也会返回一个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852562/