在没有https的localhost上登录facebook

qui*_*inn 11 facebook-javascript-sdk

我知道在SO上有大约一百个问题,但是它们可能都不是与Facebook平台上目前正在发生的事情有关的最新信息。似乎关闭SSL的开关已禁用:

在此处输入图片说明

可能很难看到,但是“强制HTTPS”切换为灰色,无法切换。我全力支持在生产环境中实施HTTPS,但是为此目的而针对Facebook API构建的所有人是否真的为此在本地服务器上设置了SSL证书?

Ima*_*ghi 17

您仍然可以使用带有“localhost”地址的 HTTP,但前提是您的应用程序仍处于开发模式。

您可以从 App Dashboard 将 App 模式更改为开发模式:

在此处输入图片说明

在这种模式下,您只能使用 Facebook 测试用户帐户来测试您的应用程序。您可以从应用仪表板获取测试帐户登录凭据。

请注意,http://localhost重定向仅在开发模式下自动允许,不需要添加到 Valid OAuth Redirect URIs 部分。

此 Facebook 博客中阅读更多相关信息。

  • 我的网站在开发模式下使用该应用程序,但它仍然无法正常工作。我收到此错误:“当从 http 页面调用时,FB.getLoginStatus 将很快停止工作。” (7认同)
  • 这个答案需要更新,Facebook 将只允许 https,无论其本地主机是否处于开发模式。 (4认同)
  • 我相当确定我试过这个。我正在使用 localhost,但我必须创建一个假证书并将其添加到我的操作系统的受信任证书中,因为如果没有 localhost 上的 https,它就无法工作。 (2认同)

小智 14

2021 年更新:Facebook 不再允许通过 HTTP 进行本地主机。您需要让您的网站通过 HTTPS 在本地运行以进行测试。尽管他们的博客文章和字面上的 Facebook 开发者控制台向您保证他们默认允许通过 HTTP 进行本地主机。

  • 我的天啊。感谢 Facebook,我浪费了 2 个小时以上的生命。 (4认同)
  • 有关于此的任何帖子或文档吗?正如您所提到的,设置仍然表明 localhost 在开发模式下“工作”。 (2认同)

小智 6

将此粘贴到您的客户端 json 中
"start": "set HTTPS=true&&react-scripts start"

下一个副本并在您的网址栏中输入。
chrome://flags/#allow-insecure-localhost
并将允许从本地主机加载的资源的无效证书设置为启用


Mar*_*liu 5

测试您的 facebook 登录的最简单方法是使用 ngrok,因为您不能再禁用“强制 HTTPS”选项:

ngrok.com

我是 linux 用户。安装后,只需在您的终端输入:

ngrok http 80
Run Code Online (Sandbox Code Playgroud)

并自动为您的本地项目创建一个新的 https 域。您将在终端中看到一个 ui 界面,您的安全域将以 https:// 开头

复制域并在您的应用程序中的developers.facebook.com 中使用它,以查看您的代码是否良好。

如果是好的,那么可以继续进行,直到您将项目托管在安全域上。

有关 ngrok.com 的更多信息和文档,请参阅: ngrok 文档


Lan*_*nda -3

此设置需要 HTTPS 进行 OAuth 重定向,并且它要求返回或需要访问令牌的 Facebook JavaScript SDK 调用只能来自 HTTPS 页面。截至 2018 年 3 月创建的所有新应用程序均默认启用此设置,您应该计划在 2018 年 10 月 6 日之前将任何现有应用程序迁移为仅使用 HTTPS URL。

大多数主要云应用程序主机都为您的应用程序提供免费、自动的 TLS 证书配置。如果您自行托管您的应用程序或者您的托管服务默认不提供 HTTPS,您可以从 Let's Encrypt 为您的域获取免费证书。

https://developers.facebook.com/docs/facebook-login/security

  • 我知道如何使用 vps 提供商和 certbot。这个问题清楚地写着“localhost”。我最终为“localhost”生成了一个自签名证书,将其添加到本地 nginx,反向代理到我的应用程序,最后将该证书添加到我的 OS X 钥匙串。它确实有效,但对于本地开发来说,这个过程对我来说似乎很荒谬。 (6认同)
  • 如果它解决了原始问题,您可以将其添加为自我答案并将其标记为已回答,以便对其他人有所帮助。 (2认同)
  • 我也感受到了同样的痛苦,我最终使用 https://ngrok.com 将我的本地主机隧道连接到 https 公共端点 (2认同)