Firebase谷歌登录报错sign_in_failed(ApiException:10):模拟器异常但真机正常
Google Play应用谷歌登录模拟器报错ApiException:10,真机正常的解决方法
问题情况
已上架Google Play的应用,谷歌登录功能在真实物理设备上可正常使用,但在模拟器中运行时抛出错误:
PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
已尝试的排查操作
- 执行
flutter clean和flutter pub get命令 - 卸载应用后重新安装运行
- 核对Play控制台与本地的SHA密钥,确认完全一致
- 重新下载并替换
google-services.json文件
针对性解决方案
ApiException:10本质是OAuth验证失败,结合模拟器的特殊运行场景,可尝试以下操作:
使用带完整Google Play服务的模拟器镜像
避免使用默认无Google Play的系统镜像,创建模拟器时选择带有「Google Play」标识的版本。打开模拟器内的Google Play应用,将所有服务更新至最新——旧版本服务常引发登录验证失败问题。检查模拟器的Google账号状态
确保模拟器登录的是与应用OAuth配置绑定的测试账号,且账号未被谷歌限制。可尝试退出账号后重新登录,或更换其他测试账号测试。添加debug SHA1至Play控制台
上架应用使用的是release SHA,但模拟器运行的是debug包,需将本地debug版本的SHA1密钥添加到Play控制台的OAuth配置中:- 执行命令获取debug SHA1:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 登录Play控制台,进入应用的「API服务」-「凭据」,找到对应OAuth客户端ID,添加该debug SHA1并保存,等待10分钟左右再测试。
- 执行命令获取debug SHA1:
确认模拟器可正常访问Google服务
谷歌登录依赖外网访问Google服务,检查模拟器是否被代理、防火墙拦截。可在模拟器浏览器中打开accounts.google.com,确认能正常访问后再测试登录功能。优先使用Android Studio官方模拟器
第三方模拟器常存在Google服务兼容性问题,尽量使用Android Studio自带的官方模拟器,稳定性更有保障。
内容的提问来源于stack exchange,提问作者Harshana
相关产品推荐
相关产品推荐

