我在一个使用 FB JS auth SDK 的网站上工作,只在用户单击“使用 Facebook 登录”按钮时让用户登录,而不是在页面加载或其他任何情况下自动让用户登录。因此,我在 FB.init 中将“status”设置为 false。
下面是我的实现:
window.fbAsyncInit = function() {
FB.init({
appId: '73092430896',
status: false,
cookie: true,
xfbml: true,
oauth: true,
});
// listen for and handle auth.statusChange events
FB.Event.subscribe('auth.statusChange', function(response) {
console.log('login called.');
if (response.authResponse) {
console.log('repsonse is set.');
if(typeof APPJS.login != 'undefined' && typeof APPJS.login.loginCallback == 'function'){
console.log('login.callback exists.');
APPJS.login.loginCallback(response);
}
}
});
};
问题是,auth.statusChange 回调没有在 IE(我试过的任何版本)中触发,因此我的用户没有通过我的自定义 JS 函数登录。它在 Chrome、Safari 和 Firefox 中运行良好。它与在任何这些浏览器中登录/注销 Facebook 无关,我已经尝试同时登录和注销 Facebook,但 IE 仍然没有调用回调。
感谢任何帮助。
更新:添加 channel 参数似乎无法解决问题。
最佳答案
请参阅本页的“在页面加载时检查用户状态”部分: http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
它说你应该在 FB.init 调用中设置“status: true”。
关于javascript - Facebook auth.statusChange 在 IE 中的对话框后未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492833/