Google OAuth登录流程意外请求额外权限的排查与解决求助
排查并移除Google OAuth额外请求的profile/openid权限方案
一、核对客户端代码的权限参数
- 不管使用原生Google Sign-In SDK还是第三方封装库(如Firebase Auth),强制指定仅请求
email权限:- Android:
GoogleSignInOptions不要调用requestProfile(),requestScopes只传入Scope("email"); - iOS:
GIDSignInConfiguration的scopes数组仅保留"https://www.googleapis.com/auth/userinfo.email"; - Firebase Auth:调用
signInWithGoogle时,显式设置scopes = ["email"],覆盖默认配置。
- Android:
- 排查代码中是否有隐性追加scope的逻辑,比如某些工具类、封装方法偷偷添加了
profile或openid。
二、检查OAuth同意屏幕配置
- 登录Google Cloud控制台,进入「API和服务」→「OAuth同意屏幕」:
- 查看「已发布的范围」和「测试范围」,删除
profile、openid相关条目,仅保留email权限; - 测试版应用修改后,测试用户需重新授权即可生效;已发布应用需提交审核,审核通过后所有用户会看到更新后的权限请求。
- 查看「已发布的范围」和「测试范围」,删除
三、清除缓存与旧授权记录
- 移动端:卸载重装应用,清除应用缓存,避免本地缓存的旧scope参数被复用;
- Google账号侧:让测试用户登录Google账号的「安全」页面,找到「第三方应用访问权限」,移除你的应用授权记录,重新发起授权即可看到最新权限请求。
四、排查依赖库版本变动
- 若近期更新了Google Sign-In、Firebase Auth等依赖库,新版本可能默认追加了
profile/openid。查看对应SDK的版本变更日志,确认默认scope配置,然后手动覆盖为仅email。
五、抓包验证实际请求
- 用Charles或Fiddler抓取移动端的OAuth请求,查看请求参数中的
scope字段,确认是否包含profile或openid。如果有,定位代码中追加这些权限的位置并删除。
内容的提问来源于stack exchange,提问作者broun
相关产品推荐
相关产品推荐

