You need to enable JavaScript to run this app. Android基于GoogleSignInClient实现任意谷歌账号登录报12500错误
优惠活动
大模型
产品
解决方案
定价
更多

Android基于GoogleSignInClient实现任意谷歌账号登录报12500错误

谷歌登录报 code=12500 异常的修复方案

错误码12500对应Google Sign-In定义的通用登录失败状态,结合“仅创建Google Cloud项目的绑定账号可正常登录”的现象,问题90%以上出在云项目的OAuth配置环节,代码逻辑问题占比极低。

优先排查的配置类问题

  • OAuth同意屏幕处于测试状态
    这是和你遇到的现象匹配度最高的根因:当OAuth应用处于测试发布阶段时,仅手动添加到测试用户白名单内的谷歌账号可以完成登录,其余所有账号都会被直接拦截返回12500错误。
    调整方式:
    • 若需支持任意用户登录,需将OAuth应用状态切换为生产发布模式,按照页面提示补全应用名称、开发者联系邮箱、应用归属域名等必填信息,完成对应授权范围的合规校验
    • 若暂时处于开发调试阶段,需将所有需要测试的谷歌账号手动添加到测试用户列表中,单项目最多支持添加100个测试账号
  • Android OAuth客户端配置信息不匹配
    检查对应Android类型OAuth客户端的两项核心配置:
    • 应用签名:必须同时录入调试包、正式包、各渠道包对应的SHA-1签名值,不能仅录入开发机的调试签名
    • 应用包名:必须和项目build.gradle中声明的applicationId完全一致,不存在大小写差异、前后多余空格的问题

代码侧可优化的点

你当前代码中请求的Scope(Scopes.PLUS_ME)属于已废弃的Google+接口权限,该权限从2019年起就不再对非测试状态的OAuth应用开放,非白名单账号发起授权时会直接被拒绝返回错误,需要将该权限请求移除。
调整后的GoogleSignInOptions初始化参考实现:

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestEmail()
    .requestScopes(
        Scope(Scopes.PROFILE),
        Scope(Scopes.EMAIL),
        // 移除已废弃的 PLUS_ME 权限请求
        Scope(YouTubeScopes.YOUTUBE)
    )
    .build()

其他容易遗漏的校验项

  • 完成Cloud控制台的配置修改后,等待5分钟左右的配置同步周期再测试登录,不要修改后立刻发起请求
  • 确认测试设备上的Google Play服务为最新版本,已登录的谷歌账号未被系统标记为受限的工作资料账号
  • 确认生产环境打包的应用没有误开android:debuggable=true调试开关

内容的提问来源于stack exchange,提问作者Τζιότι

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 00:06:05