2

我确定我只是忽略了 Facebook API 文档中的某些内容。基本上,在我加载了 FB Graph 之后,我需要知道会话是否处于活动状态......我不能简单地假设他们已经注销并且如果他们在“auth.statusChange”登录后简单地重新渲染事件被触发。我需要马上知道。

下面是我使用的代码。最重要的是 FB.getLoginStatus/getAuthResponse/getAccessToken 不像我期望的那样工作;本质上,当它被调用时,它表明他们是登录还是注销。

(函数(d){

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

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

    // 应用配置数据
    变量配置 = {
        appId : XXXX,
        饼干:真的,
        状态:真实,
        无摩擦请求:真
    };

    window.fbAsyncInit = function() {
        // 这行不通。
        // 我不能假设他们已经注销并依靠这个来告诉我他们已经登录。
        FB.Event.subscribe('auth.statusChange', function(response) {});

        // 在里面
        FB.init(配置);

        // 这些并不表示用户是否已注销 :(
        FB.getLoginStatus(函数(响应) { });
        FB.getAuthResponse(函数(响应) { });
        FB.getAccessToken(function(response) { });
    };

}(文档));

任何帮助深表感谢。:)

4

1 回答 1

0

感谢您的帮助,但我在另一篇文章中找到了答案:https ://stackoverflow.com/a/7765144/560686

显然,当您仍处于沙盒模式FB.getLoginStatus()时,只会在他们登录时触发回调,但不会在他们注销时触发。为了让它工作,我必须禁用沙盒模式。:)

于 2012-06-28T03:12:38.107 回答