Android应用Firebase手机认证报错:未配置reCAPTCHA Enterprise密钥求助
问题现象
认证时日志出现以下错误:
ForceRecaptchaV2Flow from phoneAuthOptions = false, ForceRecaptchav2Flow from firebaseSettings = false
W/System (27157): Ignoring header X-Firebase-Locale because its value was null.
E/zzb (27157): Failed to initialize reCAPTCHA config: No Recaptcha Enterprise siteKey configured for tenant/project *
W/System (27157): Ignoring header X-Firebase-Locale because its value was null.
I/PlayCore(27157): UID: [12418] PID: [27157] IntegrityService : requestIntegrityToken(IntegrityTokenRequest{nonce=2WSJ5e037AiyKOeVR20qvii2smtI8flclRnpuMm65mw, cloudProjectNumber=551503664846, network=null})
...
E/AndroidRuntime(27157): FATAL EXCEPTION: Firebase Blocking Thread #0
E/AndroidRuntime(27157): Process: com.bestflux.btown, PID: 27157
已执行的排查操作
- 确认Google Cloud Console中已启用reCAPTCHA Enterprise API
- 在Google Cloud reCAPTCHA Enterprise控制台创建了reCAPTCHA Enterprise密钥
- 确保Firebase项目与启用reCAPTCHA Enterprise的Google Cloud项目关联
- 检查Firebase控制台中「认证→登录方式→手机」已启用手机认证
- 确认使用最新版本的firebase_auth和firebase_core包
- 验证应用的SHA-1和SHA-256指纹已正确添加到Firebase项目设置中
- 确认phoneAuthOptions和firebaseSettings中的ForceRecaptchaV2Flow标志均设为false
疑问解答
1. 是否需要额外配置步骤将reCAPTCHA Enterprise siteKey传递给Firebase认证,还是会自动获取?
不需要手动传递siteKey给Firebase认证,但要确保创建reCAPTCHA Enterprise密钥时:
- 关联的项目是Firebase绑定的Google Cloud项目
- 密钥的应用类型配置正确:Android应用需选择「Android」类型,添加匹配的包名和SHA-256指纹(与Firebase项目中添加的一致)
Firebase会自动从关联的Google Cloud项目中获取有效密钥,无需在代码中手动配置。
2. Firebase项目与Google Cloud项目的配置错误是否会导致此问题?
会,常见关联问题包括:
- Firebase绑定的Google Cloud项目,和创建reCAPTCHA密钥的项目不是同一个
- Google Cloud项目中reCAPTCHA Enterprise API被意外禁用
- Firebase认证服务账户(
firebase-auth@system.gserviceaccount.com)没有访问reCAPTCHA Enterprise资源的权限
验证方式:
- 在Firebase控制台「项目设置→常规」查看「关联的Google Cloud项目ID」,确认与创建密钥的项目ID一致
- 检查Google Cloud控制台「IAM与管理员」页面,确认上述服务账户拥有「reCAPTCHA Enterprise Agent」角色
3. 当前Firebase手机认证实现中,reCAPTCHA Enterprise集成是否存在已知问题或解决方法?
存在部分常见问题及对应解决方法:
- 密钥配置不匹配:密钥的应用类型、包名、指纹与应用实际信息不符会导致无法获取配置,需重新检查密钥参数,确保与Firebase项目应用信息完全一致
- 依赖版本冲突:即使使用最新firebase_auth包,旧版本的Google Play Services或Firebase依赖可能引发异常,可通过
./gradlew app:dependencies检查依赖树,排除冲突的旧版本 - 网络环境限制:应用无法访问Google reCAPTCHA服务(如国内未配置代理)会导致初始化失败,需确保应用能正常访问
https://recaptchaenterprise.googleapis.com等相关域名 - 测试环境异常:模拟器Play Services版本过低或完整性验证失败可能触发错误,建议使用实体设备测试,或更新模拟器Play Services版本
内容的提问来源于stack exchange,提问作者Kavita Patel

