Google登录意外请求通讯录权限的问题排查与解决
以下是需要排查和修改的几个关键环节:
检查登录请求代码中的Scope配置
绝大多数情况下,问题出在应用代码里硬编码了通讯录相关的权限Scope,比如https://www.googleapis.com/auth/contacts或contacts.readonly。即使控制台没配置这些Scope,只要代码在发起Google登录请求时携带了,就会触发权限申请。直接删除代码中多余的通讯录Scope,只保留你在控制台配置的必要权限。修正Terraform配置中的权限范围
查看你的Terraform配置里google_oauth_client资源的scopes参数,确认是否包含了通讯录相关的权限值。如果有,立即移除该条目,然后执行terraform apply更新配置。示例修正如下:resource "google_oauth_client" "my_app" { name = "my-app-client" project = "my-project-id" scopes = ["https://www.googleapis.com/auth/userinfo.profile"] # 仅保留必要Scope,移除通讯录相关项 # 其他配置... }重新发布OAuth同意屏幕
如果你在控制台修改了Scope但没有重新发布同意屏幕(尤其是已上线的生产应用),旧的权限配置仍会生效。进入Google Cloud控制台的OAuth同意屏幕页面,确认修改后的Scope已保存,并点击「发布应用」按钮,更新生效版本。清除浏览器缓存或使用隐身窗口测试
测试用户的浏览器可能缓存了之前的权限授权记录,导致新配置未立即生效。清除浏览器中Google账号的登录缓存,或者使用隐身窗口重新测试登录流程,验证权限请求是否已更新。确认应用使用的客户端ID匹配
检查应用实际调用的OAuth客户端ID,是否和你在控制台配置Scope的那个客户端ID一致。避免应用误使用了项目中其他带有通讯录权限的客户端ID。
内容的提问来源于stack exchange,提问作者Eugene Brown

