我确定我只是忽略了 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) { }); }; }(文档));
任何帮助深表感谢。:)