javascript - 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?
对此的任何见解都将是奇妙的。谢谢
解决方案
好的,经过几个小时的斗争,我终于发现了困扰 Firefox 的问题:应用程序的 Facebook 仪表板设置中的网站 URL 字段。
问题甚至不在于 ngrok 或缺少签名证书,而是设置中的网站具有生产域 (.app) 而不是我目前用于开发的 ngrok 域 (eu.ngrok.io )。
我设法将其查明回仪表板设置的唯一原因是因为我有 2 个 Facebook 应用程序,而另一个运行正常,所以我想这可能是导致问题的设置中的错误配置(Facebook 有一个糟糕的用于解释/处理错误的标准——这就像在黑暗中射击,直到你在使用他们的 SDK 时遇到某些东西)。
我在这里不明白的是,为什么只有 Firefox 似乎有这个设置被错误配置的问题,或者为什么这个问题从一天到另一天突然消失在 Chrome 上。无论如何,如果我设法帮助其他人解决与此线程类似的任何问题,那么这种头痛是值得的。
和平相处✌</p>
推荐阅读
- javascript - 赛普拉斯中的 SSO 登录
- kotlin - JetpackCompose 导航嵌套图导致“应在 setGraph 调用之前设置 ViewModelStore”异常
- git - 重命名后无法提交灰显文件
- elasticsearch - Elastic-Cloud 未从 Serilog Sink 接收数据
- android - 我想每隔三个位置在列表视图中添加 google admob 原生广告,但我不能
- linux - linux中的简单排序
- postgresql - PostgreSQL 使用 JSONB 和 TypeORM 加入
- java - 一段时间后如何启动代码?
- php - prestashop 网址到类别
- docker - 在 devcontainers 中配置对私有存储库的访问