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