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

使用django-social-auth实现Google OAuth2时重定向URL不匹配问题求助

解决Django-social-auth生产环境Google登录Redirect URI不匹配问题

核心问题

生产环境中Django生成的重定向URI为HTTP协议,与Google Cloud Console配置的HTTPS URI不匹配,触发OAuth验证失败。

解决方案

1. 调整Django核心配置

在settings.py中添加/修改以下配置:

  • 启用反向代理SSL识别(若使用Nginx/Apache等反向代理):
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
  • 强制HTTPS相关安全设置:
    DEBUG = False
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    

2. 配置django-social-auth强制HTTPS重定向

在settings.py中添加:

SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
  • 避免硬编码SOCIAL_AUTH_GOOGLE_OAUTH2_REDIRECT_URI为HTTP地址,优先让系统自动生成符合当前环境的URI。

3. 确保反向代理传递正确的协议头(以Nginx为例)

在Nginx站点配置中,给Django转发请求时添加X-Forwarded-Proto头:

location / {
    proxy_pass http://your_django_backend;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

同时配置Nginx强制HTTP跳转至HTTPS:

server {
    listen 80;
    server_name www.swimseekr.com;
    return 301 https://$server_name$request_uri;
}

4. 验证Google Cloud Console配置

  • 确认生产环境OAuth客户端ID的已授权重定向URI为https://www.swimseekr.com/social-auth/complete/google-oauth2/,注意末尾斜杠和域名拼写完全一致。
  • 确保生产环境使用的是独立的OAuth客户端凭据,未混用测试环境的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:47:15