You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地HTTP环境下使用Facebook Login/Graph API遇阻求助

解决Facebook Login本地HTTP环境下的Insecure Login Blocked问题

首先,你遇到的这个错误是因为Facebook现在对新创建的测试应用强制启用了HTTPS登录,旧问答里提到的“关闭Enforce HTTPS”方法已经不适用了——新应用的这个选项确实会锁定为Yes,没法修改。下面给你两个最简便的解决方案,不用复杂配置就能快速继续开发:

方法1:用ngrok快速生成HTTPS公网隧道(推荐)

这是本地开发测试第三方OAuth最常用的方法,一键把你的localhost:8000转换成HTTPS域名:

  1. 安装ngrok:Mac上直接用Homebrew执行 brew install ngrok
  2. 正常启动你的Django服务:python manage.py runserver
  3. 另开一个终端窗口,运行 ngrok http 8000,你会看到类似这样的输出:

    Forwarding https://abc123.ngrok.io -> http://localhost:8000

  4. 打开Facebook应用的设置页面:
    • 把https://abc123.ngrok.io添加到Valid OAuth Redirect URIs列表中
    • 把应用的Site URL也改成这个HTTPS地址
  5. 现在用https://abc123.ngrok.io访问你的应用,就能正常调用Facebook Login的JS SDK,不会再报Insecure Login的错误。

方法2:给Django本地服务开启HTTPS

如果不想用外部工具,可以用django-sslserver包快速开启HTTPS:

  1. 安装依赖包:pip install django-sslserver
  2. 在Django项目的settings.py里,把sslserver添加到INSTALLED_APPS列表中
  3. 启动服务时换成HTTPS命令:python manage.py runsslserver 8000
  4. 现在你的本地访问地址是https://localhost:8000,把这个地址加到Facebook应用的Valid OAuth Redirect URIs和Site URL里
  5. 浏览器打开时会提示证书不安全,手动信任即可(Mac上可以通过钥匙串访问添加信任)

关于手动构建登录流程的疑问

你提到的手动登录流程其实也绕不开HTTPS要求——Facebook的登录端点现在只接受HTTPS请求,所以即使你手动构建跳转逻辑,HTTP环境下还是会被拦截。所以优先解决本地HTTPS的问题才是核心,上面两个方法都能快速搞定,之后你的JS SDK代码就能正常工作了。

另外,你的JS代码本身没有问题,FB.init里的cookie: true设置是正确的,方便后续用Python获取会话中的token,等HTTPS问题解决后,这段代码应该就能正常触发登录和获取登录状态了。

内容的提问来源于stack exchange,提问作者rishijd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:24:01