这是我当前的 Facebook 应用程序登录流程(请参阅此答案以获取解释)。 logout()
并且login()
是在用户注销或登录时呈现页面的虚拟函数。
window.fbAsyncInit = function() {
FB.init({
appId: '...',
channelUrl: window.location.protocol + '//' + window.location.host + '/channel.html',
status: false,
cookie: true,
xfbml: false,
oauth: true
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
login(response);
} else {
FB.Event.subscribe('auth.login', function(response) {
login(response);
});
logout();
}
});
};
使用此登录流程,我不必在用户登录时重新加载页面,但出现静默错误:
阻止来源为“ http://www.facebook.com ”的框架访问来源为“ https://s-static.ak.facebook.com ”的框架。请求访问的帧具有“http”协议,被访问的帧具有“https”协议。协议必须匹配。
我假设重新加载页面会将保存应用程序的 iframe 传输到https://
协议,但我真的不明白为什么或这意味着什么。为什么会发生此错误,是否需要关注?