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

Flutter Firebase手机号认证Play Integrity校验失败问题求助

Flutter Firebase手机号认证Play Integrity校验后崩溃问题解决

问题说明

输入手机号触发Firebase手机号认证流程,自动跳转浏览器完成Play Integrity人机校验,校验完成后应用直接崩溃,抛出异常:

Exception: This request is missing a valid app identifier, meaning that Play Integrity checks, and reCAPTCHA checks were unsuccessful

已尝试以下方案但未解决:

  • 在Firebase账户中添加SHA1和SHA-256证书指纹
  • 在app模块build.gradle中添加依赖implementation 'androidx.browser:browser:1.3.0'
  • 在Google Cloud Console启用Google Play Integrity API
  • 下载并替换项目中最新的google-services.json文件
  • 清理并重建项目

额外排查与解决方向

1. 对齐Google Play Console与Firebase的SHA指纹

如果应用是通过Google Play发布(含内部/封闭测试),Firebase里的SHA指纹必须和Google Play Console的应用签名证书指纹完全一致:

  • 打开Google Play Console → 目标应用 → 应用签名 → 复制“应用签名证书”的SHA1和SHA-256
  • 把这两个指纹添加到Firebase项目设置→应用→指纹中,替换之前可能用本地调试证书添加的记录(测试发布版本时必须用Play的签名指纹)

2. 更新Firebase Auth相关插件

旧版本的firebase_auth和firebase_core可能存在Play Integrity集成的兼容性问题:

  • 在pubspec.yaml中把firebase_auth和firebase_core更新到最新稳定版,执行flutter pub upgrade
  • 同步项目后再重新测试认证流程

3. 补全reCAPTCHA跳转的Intent Filter

浏览器校验完成后无法正确跳转回应用,会导致认证流程中断触发错误:

  • 在AndroidManifest.xml的<activity>标签内添加以下intent-filter(替换成你的应用包名):
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="app" android:host="com.your.app.package" android:path="/__/auth/callback" />
    </intent-filter>
    

4. 检查Play Integrity API的权限与配额

  • 登录Google Cloud Console,找到对应项目的Play Integrity API页面,确认API配额未耗尽(默认配额足够日常测试,但频繁调用可能触发限制)
  • 确认Firebase自动创建的服务账号拥有Play Integrity API Client角色,权限不足会直接导致校验失败

5. 调试模式的适配

本地调试时(未通过Play安装):

  • 用./gradlew signingReport获取本地调试证书的SHA指纹,确保已添加到Firebase
  • 不要手动强制启用Play Integrity校验,Firebase Auth在调试模式下会自动降级为reCAPTCHA,强制启用会导致校验失败

6. 统一所有位置的应用包名

以下几个位置的包名必须完全一致:

  • AndroidManifest.xml中的package属性
  • google-services.json里client[0].client_info.android_client_info.package_name字段
  • Firebase项目中注册的应用包名
  • Google Play Console中的应用包名

日志排查技巧

开启Firebase Auth的详细日志,获取更具体的错误信息:

FirebaseAuth.instance.setLoggingEnabled(true);

同时在Android Studio的Logcat中过滤FirebaseAuth或PlayIntegrity关键词,定位崩溃的具体触发点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:38:16