问题描述
我知道的另一个 Facebook 应用/API 帖子,但请仔细阅读。
为了更清楚,我将在此处补充说,我们目前是 2021 年,即 3 月 29 日,他们的 API 在过去几个月中发生了很大变化(并且可能也会发生变化),因此 StackO 上的大多数答案都不是'不再工作了。
此外,IMO 的文档还没有完全更新到当前版本,并且有一些不再存在的东西(例如 Dev/Live 模式)。
通过更改确保我的应用程序可以与我的本地主机一起使用后:
Settings -> Basic -> App Domains -> 'localhost'
-
Settings -> Basic -> Add platform -> Website -> 'http://localhost:8000/'
) Add Product -> Facebook Login -> leave everything empty
- 确保使用
localhost
而不是127.0.0.1
运行我的本地主机。
Facebook JavaScript SDK 似乎无法通过 http
网址运行。
因为我在 localhost 上工作(所以不在 https 上),这很烦人。在检查了 FB 文档和 Facebook login
设置中的一些工具提示后,似乎 localhost 应该 在没有启用 https 的情况下工作。如果这还不够:Enforce HTTPS
按钮呈灰色,无法再关闭。
我也尝试在 Valid OAuth Redirect URIs
中放入一些内容,但字段/工具提示不允许您放入 http://localhost:8000/
:
http://localhost 重定向仅在开发模式下自动允许,无需在此处添加。
如上所述,不再有开发模式这样的东西,或者至少没有按钮或任何东西可以改变,甚至在他们的新界面上看到模式。
有没有人设法让他的本地主机与 JS SDK 一起工作?
Ngrok 和其他答案确实很受欢迎,但我想首先知道在这个问题上是否有“真正的”解决方案(在 FB 方面)(“不,还没有”是一个可以接受的答案,因为它可能会为其他人节省大量时间)。 非常感谢!
编辑:开发/实时模式的区别仍然存在,但仅适用于由个人开发人员开发的应用程序。对于业务应用程序,它们已被访问级别所取代。 (见评论,@Cbroe) 然而,我在不做生意的情况下尝试过,但也没有奏效。
解决方法
似乎在 Facebook 方面没有解决我的问题,JavaScript 错误明确指出:
登录按钮插件不再适用于 http 页面。请更新您的网站以使用 https 登录 Facebook。
由于错误中的链接指向博客文章(而不是文档),而且我在 FB 文档中没有找到与该问题相关的任何内容,所以...无法在 http 页面中使用它。>
因此,对于其他正在寻找解决方案的人,我会推荐 how to turn your localhost django app to run in https 上的另一个 StackO 线程(因为我正在使用 Django)。
对于那些使用谷歌浏览器的人,按照上述线程,您需要关闭关于您的连接不是私密的 Chrome 错误,方法如下:
- 打开一个新标签
- 粘贴:
chrome://flags/#allow-insecure-localhost
- 启用选项“允许从本地主机加载的资源的无效证书。”
如果最终有办法让它工作,或者稍后从 FB 端更新,请随时为我的问题发布另一个解决方案。