Google OAuth 2.0本地正常,部署后出现redirect_uri_mismatch错误求助
Django AllAuth Google OAuth 部署后 redirect_uri_mismatch 解决办法
检查Django站点与AllAuth协议配置
- 登录Django Admin,找到
Sites模块,将对应SITE_ID的域名修改为yukkiewqr.eu.pythonanywhere.com(不要带http/https前缀)。 - 在
settings.py中设置ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https',确保AllAuth生成HTTPS协议的重定向地址。 - 检查
SOCIALACCOUNT_PROVIDERS的Google配置,不要硬编码本地的redirect_uri,让插件自动生成,示例配置:SOCIALACCOUNT_PROVIDERS = { 'google': { 'SCOPE': ['profile', 'email'], 'AUTH_PARAMS': {'access_type': 'online'}, } }
- 登录Django Admin,找到
验证Google控制台重定向URI
- 确认Google OAuth客户端的重定向URI完全匹配实际回调地址:
https://yukkiewqr.eu.pythonanywhere.com/google/login/callback/(注意结尾斜杠必须保留)。 - 无需添加根域名(
https://yukkiewqr.eu.pythonanywhere.com/),AllAuth仅使用callback地址完成授权流程。 - 修改配置后保存,等待1-2分钟让Google缓存更新(部分场景下缓存延迟会导致问题)。
- 确认Google OAuth客户端的重定向URI完全匹配实际回调地址:
清除缓存与会话
- 运行命令
python manage.py clearcache清除Django内部缓存。 - 让测试用户清除浏览器Cookie和缓存,或使用无痕模式测试,避免旧地址被浏览器缓存。
- 运行命令
适配PythonAnywhere主机配置
在settings.py中添加以下配置,确保Django正确识别HTTPS请求:SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')同时确认
ALLOWED_HOSTS包含yukkiewqr.eu.pythonanywhere.com。排查实际请求参数
打开浏览器开发者工具(F12)的Network标签,点击Google登录按钮,查看跳转请求中的redirect_uri参数,确认其与Google控制台配置完全一致。若不一致,回到站点配置步骤重新检查。
内容的提问来源于stack exchange,提问作者Yuki
相关产品推荐
相关产品推荐

