我想知道是否有人找到了解决我正在经历的行为的方法。
以下面的代码为例:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[----removed-------]', // App ID
channelUrl : 'http://localhost/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('auth.statusChange',fbLoginStatus);
console.log("getloginstatus");
FB.getLoginStatus(fbLoginStatus);
</script>
使用状态设置为 true 的 FB.init,本质上是getLoginStatus()
根据facebook 文档调用。但是,这显然是预期的行为,这不会触发事件auth.statusChange
,因为默认值是“未知”,而“未登录”的值也是“未知”(即使它可以知道!!)
因此,如果我还想响应未登录 facebook 的用户,我必须FB.getLoginStatus()
明确调用并将状态设置为true。
问题是,如果用户不是“注销”,这会导致函数被调用两次。
有没有一种巧妙的方法来阻止这种情况的发生?我认为我唯一的选择可能是调用不同的函数来处理身份验证更改事件。