You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter谷歌登录出现ApiException:10错误,请求问题排查

谷歌登录报错:PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10:)

Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)

背景与疑问

  • 正在从零重写一款已有应用,新旧应用使用同一个Firebase账号,原应用已集成谷歌登录并上线
  • 新应用初期使用了错误包名,后续改为和原应用一致的正确包名
  • 此前新应用使用独立Firebase项目+不同包名时,谷歌登录完全正常
  • 疑问:当前报错是否和新旧应用共享同一Firebase项目有关?

已完成的排查操作

  • 在Firebase后台配置了对应应用的SHA1和SHA256指纹
  • 确认Firebase项目中谷歌登录功能已启用
  • 执行flutter clean、flutter doctor,清理缓存并重启开发环境
  • 验证应用包名与Firebase后台配置完全一致
  • 下载并替换了最新的google-services.json文件

问题分析与解决方案

核心结论

这个报错确实大概率和新旧应用共享同一Firebase项目有关,根源是谷歌开发者控制台的OAuth 2.0客户端ID配置冲突,而非Firebase本身的限制。

具体原因

当你给同一Firebase项目添加多个包名(包括曾经配置过的错误包名),Firebase会自动在谷歌开发者控制台为每个包名生成对应的OAuth客户端ID。当你把新应用包名改为和线上应用一致后,可能出现两种冲突:

  1. 错误包名对应的OAuth客户端ID未被删除,导致谷歌登录请求时出现包名与客户端ID不匹配的隐性冲突
  2. 同一包名对应了多个客户端ID(原应用的+新应用误配置后生成的),谷歌服务无法正确匹配

修复步骤

  1. 删除谷歌开发者控制台中冗余的OAuth客户端ID
    • 打开谷歌开发者控制台,找到对应Firebase项目关联的项目
    • 进入「API和服务」→「凭据」页面
    • 找到所有类型为「Android客户端」的凭据,删除以下两类:
      • 对应错误包名的客户端ID
      • 同一正确包名下重复生成的客户端ID(保留原应用线上使用的那一个即可)
  2. 重新生成并替换google-services.json
    • 回到Firebase后台,删除当前应用配置后重新添加(或直接重新下载配置文件)
  3. 彻底清理应用缓存与构建产物
    • 执行flutter clean后,删除Android项目下的build文件夹
    • 卸载设备上的测试应用,重新构建安装

额外验证点

  • 确认本地签名用的SHA1/SHA256和Firebase后台配置的完全一致(包括debug和release环境的指纹)
  • 检查谷歌开发者控制台中「OAuth同意屏幕」的配置是否正常,确保应用名称、范围等信息未被修改

内容的提问来源于stack exchange,提问作者coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:52:43