You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Firebase手机号认证:生产环境reCAPTCHA配置问题

Firebase手机号认证reCAPTCHA初始化错误修复

核心错误分析

从日志可定位三个关键问题:

  • No Recaptcha Enterprise siteKey configured:Firebase项目未绑定有效的reCAPTCHA Enterprise站点密钥
  • 18002 Invalid PlayIntegrity token:Play Integrity验证失败,应用身份未被Google Play识别
  • Requests from this Android client application <empty> are blocked:客户端身份校验不通过,和签名、密钥绑定配置有关

1. 已发布至Google Play的Flutter应用配置reCAPTCHA的正确步骤

  • 启用Firebase手机号认证的reCAPTCHA Enterprise模式:
    进入Firebase控制台「Authentication」>「Sign-in method」>「Phone」,确认reCAPTCHA类型选择reCAPTCHA Enterprise(而非普通reCAPTCHA)
  • 绑定发布版签名指纹到reCAPTCHA密钥:
    1. 从Google Play控制台「应用签名」页面获取发布签名证书SHA-256指纹(注意是Play托管的签名,不是本地调试签名)
    2. 在GCP控制台「reCAPTCHA Enterprise」>「你的站点密钥」>「设置」>「Android应用」中,添加应用包名和该SHA-256指纹
  • 修正App Check初始化逻辑:
    你当前代码的kIsWeb判断逻辑颠倒,导致Android发布版误用debug provider,修正后代码:
if (foundation.kIsWeb) {
  await FirebaseAppCheck.instance.activate(
    webProvider: ReCaptchaV3Provider(kWebRecaptchaSiteKey),
  );
} else {
  await FirebaseAppCheck.instance.activate(
    androidProvider: AndroidProvider.playIntegrity,
    appleProvider: AppleProvider.appAttest,
  );
}
  • 确保应用通过Google Play签名发布:
    必须使用Play控制台的应用签名机制上传AAB/APK,禁止用本地签名包直接发布,否则Play Integrity无法验证应用身份

2. 设置reCAPTCHA Enterprise时遗漏的关键步骤

  • 启用reCAPTCHA Enterprise API:
    登录GCP控制台,搜索「reCAPTCHA Enterprise API」,确认API已启用(Firebase不会自动为所有项目启用该API)
  • 创建并关联Android类型的reCAPTCHA密钥:
    1. 在GCP控制台创建reCAPTCHA Enterprise站点密钥,类型选择Android
    2. 返回Firebase控制台「Authentication」>「Phone」设置页,选择「使用reCAPTCHA Enterprise」并关联刚创建的密钥
  • 验证App Check的Play Integrity配置:
    进入Firebase控制台「App Check」>「Android应用」,确认Play Integrity提供者已启用,且应用包名、签名指纹与Play控制台一致

3. 根据日志调整siteKey的特定配置

  • 检查reCAPTCHA密钥的允许列表:
    确保站点密钥的「Android应用」列表中,同时包含应用包名和发布版SHA-256指纹,缺一不可
  • 确认密钥类型匹配:
    Android环境必须使用Android类型的reCAPTCHA Enterprise密钥,你代码中的kWebRecaptchaSiteKey仅用于Web端,Android无需配置该密钥
  • 多租户项目额外检查:
    如果你的Firebase项目使用了多租户,需为每个租户单独配置对应的reCAPTCHA Enterprise站点密钥

验证步骤

  1. 将修正后的应用打包成AAB,上传至Google Play内部测试轨道
  2. 使用真实设备安装测试版应用(模拟器无法通过Play Integrity验证)
  3. 查看Firebase控制台「Authentication」>「Logs」和「App Check」>「Logs」,确认错误是否消除

内容的提问来源于stack exchange,提问作者Dilshod Sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:00:57