CircleCI构建的Android应用Firebase手机认证无法使用如何解决
问题解决步骤
1. 优先排查CircleCI构建签名一致性
该报错:
"This app is not authorized to use Firebase Authentication. Please verify that the correct package name and SHA-1 are configured in the Firebase Console"
90%以上的场景是CI构建使用的签名密钥,和你上传到Firebase的SHA对应的密钥不一致导致的:
- CircleCI默认环境不存在你本地Android Studio的签名文件(比如默认debug构建用的
~/.android/debug.keystore,或者release构建用的正式jks文件),构建时会自动生成临时签名文件,你之前上传的所谓「CircleCI对应SHA」如果不是这个临时文件的,或者你没有在CI中指定固定签名文件,就会出现签名不匹配。 - 解决方案:将你固定用于构建的签名文件(可以是专门给CI debug用的keystore,或者正式发布的jks)通过CircleCI加密环境变量存储,构建流程中拉取该文件后配置Gradle的
signingConfig指向该文件,再用以下命令计算该签名文件的SHA1、SHA256上传到Firebase控制台即可:keytool -list -v -keystore 你的签名文件路径 -alias 对应的签名别名
2. 核对google-services.json配置
开启Firebase Gradle插件后,插件会强制校验项目中google-services.json的配置,以下情况也会触发授权错误:
- CI拉取的代码中
google-services.json不是从对应Firebase项目下载的最新版本,缺少你新增的SHA对应配置 - 构建的应用包名(包含设置的
applicationIdSuffix多渠道后缀)和google-services.json中绑定的包名不匹配,需要在Firebase控制台单独添加带后缀的完整包名,再绑定对应SHA
3. 特殊场景补充
如果你使用Google Play App Signing分发应用,除了上传签名文件的SHA之外,还需要上传Google Play控制台「应用签名」页面的应用签名证书SHA1、SHA256到Firebase控制台,避免分发后的安装包出现授权错误。
需要上传到Firebase的SHA清单
- 本地开发所用所有签名密钥的SHA1、SHA256(本地debug keystore、本地正式签名jks)
- CircleCI构建所用固定签名密钥的SHA1、SHA256
- 若使用Google Play App Signing,需补充上传Google Play后台的应用签名证书SHA1、SHA256
内容的提问来源于stack exchange,提问作者user2028
相关产品推荐
相关产品推荐

