首页 > 解决方案 > Facebook SDK FB.GetLoginStatus 加载被 X-Frame-Options 拒绝(仅限 Firefox)

问题描述

我有这个 Web 应用程序登录页面,它在文档加载完成后从 Facebook JavaScript SDK 调用 FB.GetLoginStatus()。这在所有浏览器(包括移动设备)上都运行得非常好,这就是幸福。

但是,有一天,不知从何而来,我注意到当页面加载完成时,SDK 无法获取 Facebook 用户的登录状态数据。我看了一下控制台,我看到了一些东西

X-Frame-Options [由 SDK 生成的大量链接] 拒绝加载不允许框架。

这就是我的烦恼:这在 Safari 中运行良好。当我在 Chrome 上打开 Web 应用程序时,我被介绍到该错误(与上面引用的错误相同,措辞略有不同)。我在 Firefox 上试过,得到了同样的结果。我花了几个小时试图找到原因,但失败了,然后就睡着了。

第二天我醒来,奇迹般地它现在可以在 Chrome 上运行(?),而我没有做任何更改(?!)。但是,由于某种原因,该错误现在只存在于 Firefox 中。

有谁知道这可能是什么?Firefox 所做的与 Safari 和 Chrome 不同的事情?

这里的一个线索是我正在使用隧道服务(ngrok)并且我没有签名证书,因此我得到了随意(你正在进入一个“不安全”的网站,等等等等)。也许 Firefox 因为连接不安全而阻止了 SDK?

对此的任何见解都将是奇妙的。谢谢

标签: javascriptfacebookfirefoxruntime-errorfacebook-javascript-sdk

解决方案


好的,经过几个小时的斗争,我终于发现了困扰 Firefox 的问题:应用程序的 Facebook 仪表板设置中的网站 URL 字段

问题甚至不在于 ngrok 或缺少签名证书,而是设置中的网站具有生产域 (.app) 而不是我目前用于开发的 ngrok 域 (eu.ngrok.io )。

我设法将其查明回仪表板设置的唯一原因是因为我有 2 个 Facebook 应用程序,而另一个运行正常,所以我想这可能是导致问题的设置中的错误配置(Facebook 有一个糟糕的用于解释/处理错误的标准——这就像在黑暗中射击,直到你在使用他们的 SDK 时遇到某些东西)。

我在这里不明白的是,为什么只有 Firefox 似乎有这个设置被错误配置的问题,或者为什么这个问题从一天到另一天突然消失在 Chrome 上。无论如何,如果我设法帮助其他人解决与此线程类似的任何问题,那么这种头痛是值得的。

和平相处✌</p>


推荐阅读