FB.getLoginStatus返回会话,即使用户已经退出Facebook

6 facebook facebook-javascript-sdk

这真让我抓狂。一个用户登录我的Facebook应用程序,做了一些事情。然后转到Facebook并注销。我有一个小计时器,每隔一段时间会调用FB.getLoginStatus()一次,以查看用户是否仍在登录。但是每当调用FB.getLoginStatus()时,它都会返回一个带有会话对象的响应。WTF?它不应该返回undefined / unknown吗?

我正在使用对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);
Run Code Online (Sandbox Code Playgroud)

我检查并再次检查了允许请求所请求的权限。我只要求发送电子邮件和短信。所以...有什么建议吗?

jbr*_*777 6

不要以困难的方式去做。这种情况有一个简单的解决方案,只需在getLoginStatus方法中添加一个“ true ”语句作为第二个参数即可:

FB.getLoginStatus(function (response) {
   if (response === undefined || response.status === 'connected') {
      // Do something after logout
   }
}, true);
Run Code Online (Sandbox Code Playgroud)

请注意,每次调用此函数都会使您的应用程序转到 Facebook 的服务器,并且可能会给您带来相当大的网络负载,具体取决于您的实现。希望这可以帮助!


Die*_*ego 1

尝试用以下命令初始化 FB

status: false
Run Code Online (Sandbox Code Playgroud)

所以它会按照你的预期工作。这对我有用