使用Django allauth通过Google注册时遇“Access blocked”错误求助
解决Django AllAuth Google注册时"Access blocked: This app’s request is invalid"的问题
我之前踩过Google OAuth配置的不少坑,结合你遇到的情况,给你列几个最可能解决问题的排查方向:
1. 精准核对重定向URI(Redirect URIs)
这是最常见的出错点!你需要确保Google开发者控制台里「OAuth 2.0 客户端ID」的重定向URI,和Django AllAuth生成的回调地址完全一致:
- 生产环境必须是
https://你的域名/accounts/google/login/callback/(注意末尾的斜杠不能丢,协议必须是HTTPS) - 本地测试的话,要加上
http://localhost:8000/accounts/google/login/callback/(端口号对应你本地服务的端口) - 别漏了把所有环境的URI都加进去,比如测试域名、生产域名都要配置。
2. 确认OAuth客户端类型与应用匹配
检查你在控制台创建的客户端类型:如果是Web应用,就不能选成桌面/移动应用类型——Web应用的重定向规则更严格,类型不匹配会直接导致请求无效。
3. 检查OAuth consent screen(授权同意屏幕)配置
- 确保「已授权的域名」里添加了你的网站域名(包括
localhost用于本地测试) - 如果你的应用是给外部用户使用(不是仅限你的Google Workspace内部账号),一定要在「测试用户」列表里添加测试邮箱,未通过审核的应用只能允许测试用户登录,否则外部用户会被拦截。
4. 清除缓存并重启服务
有时候旧的配置会卡在缓存里:
- 重启Django服务器,确保新的HTTPS配置生效
- 清除浏览器的Cookie和缓存,或者用隐身模式测试,避免旧的OAuth会话干扰
5. 验证AllAuth的配置参数
打开你的settings.py,检查Google provider的配置是否正确,尤其是这几个关键参数:
SOCIALACCOUNT_PROVIDERS = { 'google': { 'SCOPE': [ 'profile', 'email', ], 'AUTH_PARAMS': { 'access_type': 'online', }, # 开启PKCE流程,Google现在推荐这个,能解决不少请求有效性问题 'OAUTH_PKCE_ENABLED': True, } }
6. 确认必要的Google API已启用
在Google开发者控制台的「API和服务」里,确保People API或者Google+ API已经启用(AllAuth需要调用这些API来获取用户信息,未启用的话会导致请求失败)。
如果以上步骤都试过还是不行,可以补充一下控制台里重定向URI的具体配置、OAuth consent screen的设置细节,这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者penk
相关产品推荐
相关产品推荐

