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

2023年2月Android端Firebase手机号认证隐藏Recaptcha方案

解决Flutter Firebase Android手机号认证仍显示Recaptcha问题(Play Integrity API替代SafetyNet)

以下是经过验证的解决方案,针对你遇到的Play Integrity配置后仍显示Recaptcha的问题:

1. 确认Play Integrity API全链路配置

  • 先在Google Cloud Console对应项目中,手动启用Play Integrity API(Firebase的App Check依赖该GCP服务,必须单独开启)
  • Firebase控制台进入「App Check」模块,为Android应用选择「Play Integrity」作为验证提供者,确保关联的GCP项目匹配
  • Flutter项目依赖更新:pubspec.yaml中firebase_app_check和firebase_auth升级到最新稳定版
  • 初始化App Check时明确指定Android提供者:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      // 启用App Check并指定Play Integrity
      await FirebaseAppCheck.instance.activate(
        androidProvider: AndroidProvider.playIntegrity,
        // web端密钥按需配置,Android端可忽略
        // webRecaptchaSiteKey: 'your-recaptcha-key',
      );
      runApp(const MyApp());
    }
    

2. 手机号认证模块的关键设置

  • 进入Firebase控制台「身份认证」-「手机号认证」页面,开启App Check强制执行选项——这是跳过Recaptcha的核心开关
  • 确保Firebase Android应用的SHA-256指纹完整:
    • 同时添加调试密钥、发布密钥的SHA-256;若使用Google Play应用签名,还需添加Play Console中「应用签名」的SHA-256

3. 调试与发布环境注意事项

  • 发布环境:必须使用签名后的APK/AAB,可上传至Google Play内部测试/正式轨道,或本地安装签名包;未通过Play签名的包会触发Recaptcha
  • 调试环境:若要本地调试跳过Recaptcha,需:
    1. 获取调试密钥的SHA-256,添加到Firebase Android应用的指纹列表
    2. 调用FirebaseAppCheck.instance.getToken(true)获取调试令牌,添加到Firebase App Check的调试令牌列表中

4. 排查常见问题

  • 移除所有SafetyNet相关依赖,避免配置冲突
  • AndroidManifest.xml中确保声明INTERNET权限
  • ProGuard/R8规则添加:
    -keep class com.google.android.gms.playintegrity.** { *; }
    -keep class com.google.firebase.appcheck.playintegrity.** { *; }
    

内容的提问来源于stack exchange,提问作者Mark Alexander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58