正确添加SHA密钥后Flutter注册功能仍失效,报错ApiException:10
报错排查与解决方案
ApiException: 10属于谷歌服务配置校验失败类错误,即使用户已主动添加过SHA密钥,也大概率存在配置环节遗漏,可按以下步骤逐一排查解决:
1 校验SHA密钥配置是否完全匹配
- 确认你添加到谷歌云控制台/Firebase控制台的SHA值,和你当前打包运行所用的签名文件SHA完全一致:
- 本地调试默认用的debug签名存放在用户目录下
.android/debug.keystore,获取SHA的命令为:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 如果你用了自定义签名配置,要先核对
android/app/build.gradle里signingConfigs配置的签名文件路径,生成对应SHA后再和控制台配置做比对
- 本地调试默认用的debug签名存放在用户目录下
- 注意:如果是上架Play商店的安装包,需要额外添加Play Console应用签名模块生成的SHA值,谷歌会自动替换上架包的签名,该步骤为高频遗漏点
2 校验包名与客户端ID配置
- 确认你在谷歌云控制台创建的OAuth 2.0客户端ID对应的包名,和Flutter项目
android/app/build.gradle里的applicationId完全一致,大小写也要严格匹配 - 如果使用了Firebase,要确认最新下载的
google-services.json已经放到android/app目录下,且文件内的client_id对应的包名、SHA和你项目的实际配置完全一致,修改控制台配置后必须重新下载该文件
3 项目依赖配置校验
- 检查
android/app/build.gradle顶层是否已经添加谷歌服务插件配置:apply plugin: 'com.google.gms.google-services' - 检查项目根目录的
build.gradle的dependencies中是否引入了谷歌服务依赖:classpath "com.google.gms:google-services:4.3.15"(版本可适配你的项目实际需求) - 确认代码调用谷歌登录时传入的是Android端的客户端ID,不要误传Web端、iOS端的客户端ID
4 缓存清理验证
所有配置修改完成后,按顺序执行以下操作再测试:
- 执行
flutter clean清理项目缓存 - 卸载测试设备上已安装的同包名应用
- 重新打包运行项目测试
90%以上的该类报错都是SHA配置不匹配导致,尤其是上架场景下漏加Play商店应用签名SHA的情况占比最高。
内容的提问来源于stack exchange,提问作者Abhilash Wise
相关产品推荐
相关产品推荐

