未使用Firebase的Android应用改包名后Google登录抛出ApiException 10怎么解决?
非Firebase接入Google登录修改包名后报ApiException 10解决方案
问题根因
即使你使用的是Web类型的OAuth客户端ID发起Google登录,Android端的Google Play Services在处理登录请求时,会自动携带当前应用的包名和签名证书SHA-1指纹到Google认证后端做校验。
首次配置能正常运行,是因为当时你的GCP项目下存在匹配旧包名+应用签名的身份校验规则,修改包名后校验不匹配,就会抛出
com.google.android.gms.common.api.ApiException: 10错误,该错误码明确对应开发者配置错误、应用身份校验不通过的场景。
修复步骤
- 第一步:获取当前应用使用的签名证书SHA-1指纹
调试签名可直接执行以下命令获取:
正式签名需将命令中的keystore路径、alias、密码替换为正式签名对应的参数,复制输出结果中的SHA-1值备用。keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 第二步:登录Google Cloud Platform,进入对应项目的「APIs & Services > Credentials」页面
- 第三步:新建OAuth客户端ID,应用类型选择「Android」,依次填入修改后的新包名、上一步获取的SHA-1指纹后保存
无需修改代码中已填入的Web类型client ID,仅需保证同GCP项目下存在匹配新包名+签名的Android类型OAuth凭证即可 - 第四步:清理应用本地缓存,重新打包安装测试,登录功能即可恢复
额外注意事项
如果你的应用存在多环境签名(如调试、测试、正式环境签名不同)、多渠道包名不同的情况,需要将所有用到的包名+签名组合,都创建对应的Android类型OAuth凭证,避免后续其他环境出现相同报错。
内容的提问来源于stack exchange,提问作者Flarosa
相关产品推荐
相关产品推荐

