使用django-social-auth实现Google OAuth2时重定向URL不匹配问题求助
核心问题
生产环境中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
相关产品推荐
相关产品推荐

