【发布时间】:2019-03-09 15:07:45
【问题描述】:
我在其中一个 Angular6 应用程序中使用 Facebook Javascript SDK 来集成 FB 登录。如果我登录 Facebook,一切正常。但是当我从 Facebook 注销时,它显示一个错误,上面写着 Refused to display 'https://www.facebook.com/connect/ping?client_id=######&domain=######&origin=1&redirect_uri=####&response_type=token%2Csigned_request&sdk=joey&version=v3.1 in a frame because it set 'X-Frame-Options' to 'deny'.。我已经检查了我的 Facebook 应用程序仪表板中的 oauth URL 设置,并且它正确地拥有了我的域。如何解决这个问题?
我使用的代码是:
FB.getLoginStatus(
(response: any): void => {
if (response.status === 'connected' && response.authResponse) {
FB.api('/me/permissions', (permissions) => {
for (let i = 0; i < permissions.data.length; i++) {
if (permissions.data[i].status === 'declined' && permissions.data[i].permission === 'email') {
emailDeclined = true;
}
}
if (!emailDeclined) {
this.userFacebookLogin(response);
} else {
this.fbLogin('rerequest');
}
});
} else {
console.log('Not connected');
}
},
true
);
【问题讨论】:
-
谁说它需要修复?您网站上的任何内容是否因此而无法正常工作?否则,请忽略它 - 它很可能超出了您可以影响的范围。
-
如果状态未知,我需要向用户显示一个弹出窗口。因此,我无法展示它。
-
“因此,我无法展示它” - 请具体说明,此错误是否阻碍了您进一步执行脚本,或者您的逻辑根本没有处理什么在这种情况下正确发生吗?到底哪里出了问题?
-
我检查 FB.getLoginStatus() 如果它返回
unknown或not_authorised我需要向用户显示一个弹出窗口,说他还没有连接,他需要下载我的应用程序来注册.因此,由于此错误,它无法从 Facebook 取回状态。如果您检查代码,您可以看到控制台日志记录。在实际代码中,我已经登录以显示通知。这没有发生,因为我无法从 Facebook 获得回复。 -
我知道这种类型的错误会经常发生,因为 Facebook 在后台做的跨域 voodoo,但我从未见过它实际上破坏了某些东西。然后,如果它对您造成破坏,您可能必须向 Facebook 提交错误报告。 developers.facebook.com/support/bugs
标签: javascript angular facebook sdk