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

Django all-auth实现Facebook登录遇KeyError:'access_token'求助

解决Django all-auth Facebook登录的KeyError: 'access_token'问题

我之前调试Django all-auth的Facebook登录时,也碰到过一模一样的KeyError: 'access_token'问题,结合踩过的坑,给你几个具体的排查方向:

  • 先核对Facebook开发者后台的核心配置
    这是最容易出错的环节:

    • 确保Valid OAuth Redirect URIs里添加了正确的回调地址:https://你的域名/accounts/facebook/login/callback/(注意是callback不是报错里的token路径,all-auth的OAuth2回调默认走这个地址),本地测试用local.domain.com的话,也要把https://local.domain.com/accounts/facebook/login/callback/加进去,不能遗漏。
    • 检查Django settings.py里的SOCIALACCOUNT_PROVIDERS配置,App ID和Secret必须和Facebook后台完全一致,还要指定正确的Graph API版本(比如v18.0,别用太旧的版本),示例配置如下:
      SOCIALACCOUNT_PROVIDERS = {
          'facebook': {
              'APP': {
                  'client_id': '你的Facebook App ID',
                  'secret': '你的Facebook App Secret',
                  'key': ''
              },
              'METHOD': 'oauth2',
              'SCOPE': ['email', 'public_profile'],
              'VERSION': 'v18.0'
          }
      }
      
    • 如果你的App还在Development模式,记得把测试用户添加到Facebook后台的「测试用户」列表里,否则非测试用户无法触发授权流程。
  • 检查all-auth版本与Facebook API的兼容性
    旧版本的django-all-auth可能不支持最新的Facebook Graph API,导致token交换流程出错。建议升级到django-all-auth的最新稳定版,同时确保配置里的VERSION和Facebook后台使用的API版本一致。

  • 排查请求流程中的token传递问题
    KeyError: 'access_token'本质是all-auth在处理Facebook的响应时找不到token,可能是请求流程异常:

    • 打开Django调试模式,查看/accounts/facebook/login/token/这个POST请求的具体参数,或者用浏览器开发者工具检查前端请求是否正确触发了OAuth2授权流程——如果自定义过登录模板或按钮,可能误跳过了授权步骤,直接调用了token端点。
    • 确认没有在中间件或视图里拦截修改了Facebook返回的响应参数。
  • 验证SSL配置的完整性
    虽然你已经配置了SSL,但要确保:

    • 本地使用的SSL证书是浏览器信任的(比如用mkcert生成本地可信证书),否则Facebook的授权请求可能被浏览器拦截,导致token无法正常返回。
    • Django设置里SECURE_SSL_REDIRECT = True,避免HTTP和HTTPS混合跳转导致会话或参数丢失。
  • 核对Django中间件配置
    确保django.contrib.sessions.middleware.SessionMiddleware和django.contrib.auth.middleware.AuthenticationMiddleware在MIDDLEWARE列表中,all-auth依赖这些中间件处理会话和认证流程,缺失会导致token无法正确存储传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:35:26