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

使用social-django包对接Facebook登录时遇安全拦截错误求助

解决Django + social-django Facebook登录的"Insecure Login Blocked"错误

嘿,我之前也踩过这个坑,Facebook现在对OAuth登录的HTTPS要求卡得特别严,咱们一步步来搞定它:

1. 先确保本地服务真的跑在HTTPS上(修复sslserver的问题)

你说sslserver没正常工作,大概率是配置或启动方式不对:

  • 先确认已经安装了django-sslserver:pip install django-sslserver
  • 在settings.py的INSTALLED_APPS里添加这个应用:
    INSTALLED_APPS = [
        # 其他已有的应用...
        'sslserver',
    ]
    
  • 启动服务时用这个命令:python manage.py runsslserver 0.0.0.0:8000
  • 浏览器访问https://localhost:8000时会提示证书不安全,这是正常的(自签名证书),直接手动信任就行——Facebook只认HTTPS协议,不管证书是不是权威机构签发的

2. 修正Facebook应用的重定向URI配置

这是很多人忽略的关键!你之前只填了根目录https://localhost:8000/,但social-django的Facebook登录回调是完整的接口路径:

  • 打开Facebook开发者后台,找到你的应用 → 产品 → Facebook登录 → 设置
  • 在「有效的OAuth重定向URI」里添加:https://localhost:8000/complete/facebook/
  • 一定要点击保存更改!

3. 完善Django的settings.py配置

在settings.py里补充这几个参数,确保social-django生成HTTPS的回调链接:

# 强制social-django使用HTTPS进行重定向
SOCIAL_AUTH_REDIRECT_IS_HTTPS = True

# 确认Facebook的密钥配置没有问题
SOCIAL_AUTH_FACEBOOK_KEY = '你的Facebook应用ID'
SOCIAL_AUTH_FACEBOOK_SECRET = '你的Facebook应用密钥'

另外,检查ALLOWED_HOSTS里要包含localhost:

ALLOWED_HOSTS = ['localhost', '127.0.0.1']

4. 备选方案:用ngrok做HTTPS代理(如果sslserver还是不行)

要是sslserver始终有问题,可以用ngrok把本地HTTP服务映射成公网HTTPS地址:

  • 下载并安装ngrok后,在终端运行:ngrok http 8000
  • 运行后会得到一个类似https://abc123.ngrok.io的HTTPS地址
  • 把这个地址更新到Facebook应用的「有效的OAuth重定向URI」(比如https://abc123.ngrok.io/complete/facebook/)
  • 在Django的ALLOWED_HOSTS里添加这个ngrok域名,然后用普通的python manage.py runserver启动服务,访问ngrok的HTTPS地址测试登录

按照上面的步骤来,应该就能解决这个不安全登录的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:41