Facebook 应用程序 - 本地主机和强制 https 问题

问题描述

我知道的另一个 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 端更新,请随时为我的问题发布另一个解决方案。