Firebase Google+ API报ApiException:10:运行环境及集成异常问题咨询
解决Firebase Google+ API错误(ApiException: 10:)及相关疑问
我来帮你拆解这两个问题,结合日常开发中遇到的类似场景,给你具体的排查和解决思路:
一、为什么相同AS版本、同一测试设备下,两台电脑运行结果不同?
这种情况大概率是本地环境或配置的差异导致的,你可以按以下顺序排查:
- 检查
google-services.json一致性:Firebase的配置文件是关键,两台电脑上的app/google-services.json可能不是完全同步的——比如一台更新了最新的配置,另一台还是旧版本,或者误删了oauth_client里的关键字段。直接把能正常运行的那台电脑的配置文件复制到出问题的电脑上替换,再重新同步项目试试。 - 清理Android Studio和Gradle缓存:AS的缓存有时候会抽风,导致依赖或配置加载异常。在出问题的电脑上执行
File > Invalidate Caches... > Invalidate and Restart,同时手动删除项目根目录的build文件夹和.gradle文件夹,然后重新执行Sync Project with Gradle Files。 - 核对签名配置与SHA-1:如果你们测试时用了签名打包的APK,两台电脑的签名密钥库可能不一样。Firebase需要把应用签名的SHA-1添加到控制台才能正常验证,所以如果两台电脑用的签名配置不同,就会导致验证失败。你可以:
- 检查两台电脑
build.gradle里的signingConfigs是否一致; - 把两台电脑对应的debug/release签名SHA-1都添加到Firebase项目的“应用设置”里(用
keytool -list -v -keystore 你的密钥库路径命令获取SHA-1)。
- 检查两台电脑
- 排查网络环境差异:有些公司的内网代理或防火墙会拦截Google的API请求,导致其中一台电脑无法正常连接Firebase服务。可以切换到手机热点或者其他公共网络再测试一次。
二、独立应用正常,集成到现有应用后抛出com.google.android.gms.common.api.ApiException: 10:
ApiException:10本质是OAuth 2.0客户端验证失败,结合集成场景,主要原因和解决方法如下:
- 现有应用包名未在Firebase配置:你的独立应用和现有应用包名肯定不一样,而Firebase项目里只配置了独立应用的包名。需要登录Firebase控制台,把现有应用的包名添加到项目的应用列表中,下载对应的
google-services.json替换现有应用里的文件。 - 现有应用的签名SHA-1未添加:和上面的问题类似,现有应用的debug/release签名SHA-1没有在Firebase控制台注册。不管你用哪种签名打包,都要把对应的SHA-1添加到Firebase项目的“应用签名”板块里。
- 解决依赖版本冲突:集成后可能出现Firebase或Google Play Services的依赖版本不一致——比如独立应用用的是
firebase-auth:20.0.1,而现有应用用了firebase-auth:19.0.0,版本差异会导致验证逻辑出错。建议在项目根目录的build.gradle里统一管理版本:
然后在模块ext { firebaseVersion = "20.0.1" // 替换为和独立应用一致或最新兼容版本 playServicesAuthVersion = "19.2.0" }build.gradle里引用统一版本的依赖:implementation "com.google.firebase:firebase-auth:$firebaseVersion" implementation "com.google.android.gms:play-services-auth:$playServicesAuthVersion" - 检查现有应用的Manifest配置:确保现有应用的
AndroidManifest.xml里包含必要的配置:- 必须添加网络权限:
<uses-permission android:name="android.permission.INTERNET" /> - 配置Google登录的相关Activity:
<activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" android:excludeFromRecents="true" /> - 添加Google Play Services版本的meta-data:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
- 必须添加网络权限:
按照上面的步骤逐一排查,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Naman Jain
相关产品推荐
相关产品推荐

