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

启用HTTPS后AllAuth+Google OAuth 2.0出现redirect_uri_mismatch错误

解决AllAuth + Google OAuth 2.0的redirect_uri_mismatch错误(HTTPS环境)

以下是针对该问题的具体排查和解决步骤:

  • 核对Google Cloud Console的回调地址细节
    先确认你添加的HTTPS回调地址和实际请求的地址完全一致:

    • 检查末尾的斜杠:如果AllAuth实际发起的请求里redirect_uri没有末尾斜杠,而你在Console里加了,就会不匹配;反之同理。
    • 确认是添加到Web应用类型的OAuth客户端ID下,别选错成桌面应用、Android或iOS客户端,不同类型的客户端回调地址是分开配置的。
    • 检查该客户端ID是否处于启用状态,有没有被误禁用。
  • 检查AllAuth与Django的配置

    • 在settings.py的SOCIALACCOUNT_PROVIDERS配置中,查看Google部分的redirect_uri是否明确设置为https://myweb.com/accounts/google/login/callback/;如果依赖自动生成,要确保SITE_ID对应的站点域名是HTTPS的(在Django admin的站点设置里核对)。
    • 确认ALLOWED_HOSTS包含myweb.com,避免Django因域名不允许而返回异常,间接导致回调地址错误。
    • 若开启了SECURE_SSL_REDIRECT,确保所有HTTP请求都正确重定向到HTTPS,防止授权请求从HTTP发起导致回调地址不匹配。
  • 清除缓存与残留会话

    • 执行python manage.py clearcache清除Django的缓存,防止旧的HTTP回调地址被缓存复用。
    • 让测试用户清除浏览器的Cookie和缓存,尤其是Google相关的会话数据,避免旧的授权会话残留导致地址不匹配。
  • 排查反向代理/服务器配置
    如果你的应用用了Nginx、Apache这类反向代理,必须确保代理传递了正确的HTTPS标识:

    • 以Nginx为例,在代理配置中添加:
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $host;
      
    • 在Django的settings.py中开启:
      SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
      

    这样Django才能识别到当前是HTTPS环境,AllAuth生成的回调地址才会是HTTPS的。

  • 实际验证请求中的redirect_uri参数
    打开浏览器开发者工具的Network面板,发起Google授权请求,查看请求URL中的redirect_uri参数值,把它和Cloud Console里的地址逐字符对比,找出差异后调整配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:37:37