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

Flutter应用从SafetyNet迁移至Play Integrity API后验证码问题排查

解决方案:移除手机号认证的reCAPTCHA并配置OTP显示项目名称

一、解决reCAPTCHA自动触发问题(核心:确保Play Integrity API正常工作)

你的推测方向正确,reCAPTCHA触发是因为Firebase Auth无法通过Play Integrity完成设备验证,自动 fallback 到了备用验证方案。按以下步骤排查修复:

1. 同步Firebase Auth设备验证配置

进入Firebase控制台 → Authentication → 登录方法 → 电话,在「设备验证」选项中,确认已选择「Play Integrity API」而非「SafetyNet」。后端API切换后,Firebase Auth的前端配置必须同步更新。

2. 补全Flutter端依赖配置

你仅配置了Android端Gradle依赖,Flutter项目需在pubspec.yaml中添加对应版本的firebase_auth包(版本需与Firebase BOM 31.5.0兼容,对应firebase_auth约4.10.0版本):

dependencies:
  flutter:
    sdk: flutter
  firebase_auth: ^4.10.0
  firebase_core: ^2.17.0 # 必须添加,用于初始化Firebase

执行flutter pub get后,确保应用初始化时调用await Firebase.initializeApp();。

3. 验证签名指纹一致性

  • 从Play控制台获取应用发布签名证书SHA-256指纹(路径:应用设置 → 应用签名)
  • 将该指纹添加到Firebase项目的Android应用设置中(路径:Firebase控制台 → 项目设置 → 应用 → 对应Android应用 → 添加指纹)
    Play Integrity依赖签名验证,指纹不匹配会直接导致验证失败,触发reCAPTCHA。

4. 配置Play Integrity API权限

在Google Cloud控制台,给Firebase Auth服务账号(格式:firebase-auth@<你的项目ID>.iam.gserviceaccount.com)添加Play Integrity Viewer或Play Integrity Editor角色,确保服务账号有权调用Play Integrity API。

5. 使用Play渠道分发的安装包测试

Play Integrity API仅对通过Play控制台发布的应用生效(包括内部测试、封闭测试渠道),本地调试APK或直接安装的APK无法触发正常验证,会自动 fallback 到reCAPTCHA。测试时务必使用Play渠道的安装包。

二、配置OTP短信显示Firebase项目名称

进入Firebase控制台 → Authentication → 登录方法 → 电话,找到「短信模板」设置,修改模板内容,将Firebase项目名称作为前缀添加,示例:

【你的Firebase项目名称】你的验证码是{code},用于账号登录,请在5分钟内完成验证。

注意:用方括号包裹项目名称,符合运营商短信展示规范,确保项目名称能正常显示在OTP短信中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:33