Flutter本地调试Google登录报ApiException:10错误问题咨询
Flutter Firebase Google登录报
ApiException: 10 问题解答 本地测试支持说明
Google登录完全支持本地直接调试,不需要提前上传应用到Google Play或任何Google平台。所谓「必须上传应用才能测试」的说法,是混淆了Google Play托管应用签名场景的配置要求,本地debug环境只要配置正确,不需要上架就能跑通全流程。
错误根因
com.google.android.gms.common.api.ApiException: 10 是典型的客户端身份校验失败错误,即你当前运行的APK的包名、签名信息,和Google服务端登记的合法应用信息不匹配,和登录业务代码、运行设备是模拟器还是真机没有直接关联。
分步排查方案
按优先级从高到低依次检查:
- 重新获取准确的签名指纹,补全Firebase后台配置
绝大多数该错误都是SHA值配置错误导致的,不要手动找debug.keystore文件计算签名,直接在项目的android目录下执行命令:./gradlew signingReport
命令会输出所有构建变体对应的SHA-1、SHA-256值,把debug、release环境对应的两组指纹,全部添加到Firebase控制台「项目设置-Android应用」的SHA指纹列表里——注意不要漏填SHA-256,新版本Google Play服务会同时校验两个指纹值。
如果你用的是带「Google Play」标识的模拟器测试,这类模拟器的系统签名是Google官方持有,和你本地debug签名不一致,要么额外添加对应签名指纹,要么换不带Google Play标识的Google APIs镜像测试。 - 替换最新的配置文件
每次在Firebase后台修改完签名、包名等配置后,都要重新下载最新的google-services.json文件,完全替换android/app目录下的旧文件,旧文件不会自动同步你后台修改的新配置。 - 核对包名一致性
检查android/app/build.gradle中配置的applicationId,和Firebase后台登记的Android应用包名完全一致,任何字符、大小写差异都会导致校验失败。 - 清理缓存重新编译
替换完配置后,先执行flutter clean清理所有旧构建缓存,再重新全量编译运行项目,热重载、增量编译不会加载新的配置文件,会导致配置不生效。 - 修复依赖冲突
你当前pubspec.yaml中引入的firebase: ^9.0.3是已经废弃的旧版整合依赖,会和单独引入的firebase_core、firebase_auth产生版本冲突,直接删除这行依赖即可,只保留拆分后的独立Firebase组件依赖。
注意事项
不要在未安装完整Google Mobile Services(GMS)框架的国产定制安卓设备上测试Google登录,这类设备本身缺失Google服务依赖,也会抛出10号错误,测试请使用自带完整GMS的模拟器、或安装了官方GMS套件的真机。
内容的提问来源于stack exchange,提问作者Kimi29
相关产品推荐
相关产品推荐

