React Native应用发布AAB时Firebase Phone Auth报[auth/missing-client-identifier]错误
Firebase Phone Auth [auth/missing-client-identifier] 错误(AAB打包后触发,APK正常)
问题描述
我开发的React Native多风味/架构应用集成了Firebase Phone Auth,TestFlight和App Distribution测试阶段,Android/iOS各风味的认证功能均正常。使用同一上传密钥生成签名发布APK后,真机和BrowserStack测试中,真实号码、测试号码的认证都无问题;但生成发布AAB后,真实号码认证出现[auth/missing-client-identifier]错误。
已完成的排查步骤
- Firebase Console与Google Cloud Console项目ID一致,已添加相同的SHA-1/SHA-256,Google Cloud Console项目限制设为none
- 通过
./gradlew signingReport命令和Google Play Console(已上传AAB未激活)核对SHA值,并将其添加至Firebase Console - 在build.gradle中添加
implementation "androidx.browser:browser:1.2.0"依赖 - 清理重建项目,重新下载google-services.json
- 暂未尝试启用Device Check API(不确定是否已废弃)
解决建议
1. 补充Google Play自动生成的签名SHA值
上传AAB到Google Play后,Google会自动生成应用签名密钥(除非你手动管理密钥),这个密钥的SHA指纹才是AAB打包后应用实际使用的签名信息。你需要:
- 登录Google Play Console,进入应用的「发布」->「设置」->「应用签名」页面
- 获取页面中「应用签名证书」的SHA-1和SHA-256值
- 将这两个值添加到Firebase Console的对应应用配置中,重新下载
google-services.json替换到项目的Android模块根目录
2. 确认多风味签名配置一致性
检查项目build.gradle(Module级别)中的风味配置,确保所有release风味都正确指向了上传密钥的签名配置,避免AAB打包时误用其他签名:
android { flavorDimensions "type" productFlavors { production { dimension "type" signingConfig signingConfigs.release } staging { dimension "type" signingConfig signingConfigs.release } } }
3. 校验google-services.json完整性
新下载的google-services.json中,每个client节点下的sha1和sha256字段需要包含以下所有指纹:
- 本地上传密钥的SHA值
- Google Play自动生成的应用签名密钥的SHA值
4. 启用Device Check API
Device Check API并未废弃,Firebase Phone Auth依赖它完成设备合法性校验。操作步骤:
- 登录Google Cloud Console,搜索「Device Check API」
- 为当前项目启用该API,等待生效后重新测试AAB版本的认证功能
5. 核对OAuth 2.0客户端ID配置
进入Google Cloud Console的「API和服务」->「凭据」页面:
- 找到对应Android应用的OAuth 2.0客户端ID
- 确认其「限制」中的包名正确,且已关联所有必要的SHA指纹(本地上传密钥+Google Play签名密钥)
内容的提问来源于stack exchange,提问作者M.N.
相关产品推荐
相关产品推荐

