Facebook API - 检测会话是否处于活动状态或未处于活动状态

问题描述:

我确定我只是忽略了Facebook API文档中的某些内容。基本上,在我加载FB Graph之后,我需要知道会话是否处于活动状态......我不能简单地假设他们已经注销,并且只要他们一旦登录就重新呈现“auth.statusChange”事件被触发。我需要立即知道蝙蝠。Facebook API - 检测会话是否处于活动状态或未处于活动状态

下面是我用过的代码。最重要的是,FB.getLoginStatus/getAuthResponse/getAccessToken不像我预期的那样工作;基本上它在被调用时指示它们是登录还是登出。

 
(function(d) { 

    // Create fb-root 
    var fb_root = document.createElement('div'); 
     fb_root.id = "fb-root"; 
     document.getElementsByTagName('body')[0].appendChild(fb_root); 

    // Load FB Async 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 

    // App config-data 
    var config = { 
     appId : XXXX, 
     cookie: true, 
     status: true, 
     frictionlessRequests: true 
    }; 

    window.fbAsyncInit = function() { 
     // This won't work. 
     // I can't assume they're logged out and rely on this to tell me they're logged in. 
     FB.Event.subscribe('auth.statusChange', function(response) {}); 

     // Init 
     FB.init(config); 

     // These do not inidicate if the user is logged out :(
     FB.getLoginStatus(function(response) { }); 
     FB.getAuthResponse(function(response) { }); 
     FB.getAccessToken(function(response) { }); 
    }; 

}(document)); 

任何帮助,非常感谢。 :)

+0

'不像我所期望的那样工作吗?他们以他们应该的方式工作。你和他们有什么问题? – Dhiraj

+0

我需要一个方法来返回布尔值,如果用户登录,或返回会话数据的对象字面量(可能具有状态属性),指示是否登录。相反,它似乎该方法是最初假定用户已注销并订阅身份验证状态更改以通知您;如果他们登录,最初只会通知您,否则不会执行任何操作。这是我遇到的问题,我需要知道他们是否已登录或退出。我想你可以说我想同步做到这一点。 –

感谢您的帮助,但我发现在另一篇文章的答案:https://*.com/a/7765144/560686

显然,当你仍然在沙盒模式FB.getLoginStatus()才会触发回调时,他们登录,但不当他们注销时。为了解决这个问题,我必须禁用Sandbox模式。 :)