如何使用 localhost 测试 Facebook 登录

Posted

技术标签:

【中文标题】如何使用 localhost 测试 Facebook 登录【英文标题】:How to test Facebook login with localhost 【发布时间】:2018-05-17 02:39:50 【问题描述】:

我正在使用 Django,并希望使用 django-allauth 登录 Facebook。

我很快就登录了 Facebook,并使用 localhost 进行了测试。

但我发现FB登录需要https在2018年3月之后,所以当我在本地运行服务器中登录fb时,它会出现Insecure Login Blocked: You can't get an access token or log in to this app from an insecure page. Try re-loading the page as https://这样的错误。

有什么方法可以在 localhost 中测试 fb 登录吗?

【问题讨论】:

你可能想看看这个here 谢谢,但这是关于网址的。我说的是http/https。 FB 现在只限制 https,但在 localhost 是不可能的,对吧? (即使我更改了 localhost url 名称) 不,现在不可能……但你可以试试ngrok.com。这里唯一的问题是每次重新连接时域都会更改。除非您获得高级帐户 哦,谢谢!它对开发环境非常有用。谢谢! 您需要做的就是为 HTTPS 设置您的本地主机。您可以使用自签名证书 - 所有与登录相关的内容都发生在您的浏览器中,因此它不必是完全“有效”的设置,您只需让浏览器接受证书,然后单击通过警告。 【参考方案1】:

您可以只使用像dev.yourdomain.com 这样的真实子域并将其DNS 指向127.0.0.1(或者可以使用lvh.me 域,因为它也指向127.0.0.1 - 但如果您一直信任它们)

然后你需要一个层来处理HTTPS 的本地https://dev.yourdomain.com。我推荐https://caddyserver.com/

通过像这样非常简单的配置,Caddy 可以使用其自签名 SSL 证书(查看 Caddy 文档以获取详细信息)

dev.yourdomain.com:443 
    tls self_signed
    proxy / localhost:8080

然后你就可以在一些浏览器如Firefox、Safari、Brave等中打开https://dev.yourdomain.com(我认为Chrome默认屏蔽了自签名SSL站点)

更新我在这里创建一个更详细的注释

https://gist.github.com/ralavay/5d74d35859f87d22c74984488f20186c

【讨论】:

以上是关于如何使用 localhost 测试 Facebook 登录的主要内容,如果未能解决你的问题,请参考以下文章

如何将 localhost 与改造结合使用来测试 android 应用程序 kotlin [重复]

在 Flutter 中使用 localhost 并在 iOS 设备上进行测试

如何在开发环境中在 https://localhost 上测试我的 ASP.NET 页面? [复制]

如何测试从 Flutter 应用程序到 localhost 服务的 api 调用?

如何设置 laravel 测试以转到站点名称而不是 localhost

如何在开发机器上测试子域? abc.localhost