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

Flutter Android应用切换设备后Firebase Authentication授权失败求助

Firebase Auth 手机OTP验证报错:App validation failed 排查方案

问题背景

使用Flutter开发的Android应用,原Firebase项目运行正常,更换新笔记本并在测试设备运行后,发送OTP时出现以下错误:

This app is not authorized to use Firebase Authentication. Please verify that the correct package name and SHA-1 are configured in the Firebase Console. [App validation failed]

已完成的配置:

  • Firebase控制台添加了正确的包名、SHA-1和SHA-256密钥
  • 启用了Phone Authentication登录方式
  • 启用了Play Integrity API
  • 替换了最新的google-services.json到android/app目录
  • 多次核对包名与SHA密钥

补充信息:

  • 应用未上架Play Store,仅通过Android Studio测试
  • 创建全新Firebase应用并集成Auth后仍出现相同问题

已尝试的排查:

  • 反复核对包名和SHA密钥
  • 确认google-services.json路径正确
  • 更新Firebase依赖
  • 清理并重建项目
  • 检查Logcat错误日志

额外排查方向与解决步骤

1. 确认本地调试签名密钥与Firebase后台匹配

新笔记本的Android Studio可能使用了不同的默认调试密钥,执行以下命令重新获取当前调试密钥的SHA值,与Firebase后台的记录核对:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

如果使用了自定义调试签名,检查android/app/build.gradle中的signingConfigs配置,确保指定的密钥文件和密码正确,且对应的SHA值已添加到Firebase。

2. 验证Google Services插件配置与文件读取

  • 检查android/build.gradle中是否添加了Google Services插件,且版本为最新:
    buildscript {
        dependencies {
            classpath 'com.google.gms:google-services:4.4.1'
        }
    }
    
  • 确认android/app/build.gradle末尾存在插件引用:
    apply plugin: 'com.google.gms.google-services'
    
  • 执行./gradlew clean清理项目,避免旧的google-services.json缓存残留,然后重新构建。

3. 检查OAuth 2.0客户端ID配置

进入Firebase控制台 -> 项目设置 -> 常规,滚动到"OAuth 2.0 客户端ID"区域,查看Android类型的客户端ID对应的包名和SHA-1是否与当前应用一致。若不一致,删除旧的客户端ID并重新添加SHA密钥,触发客户端ID更新。

4. 确认Play Integrity API的完整配置

  • 登录Google Cloud Console,找到对应Firebase项目,检查Play Integrity API是否已启用,且创建的API密钥未设置严格的应用/IP限制(测试阶段可暂时取消限制)。
  • 确保Flutter的firebase_auth依赖版本与Play Integrity兼容,建议使用最新稳定版:
    firebase_auth: ^4.17.8
    

5. 更新测试设备的Google Play服务

测试设备上的Google Play服务版本过低可能导致验证失败,打开设备的Google Play商店,更新"Google Play服务"到最新版本后重试。

6. 检查Firebase项目的区域与服务限制

确认Firebase项目的区域设置支持Phone Authentication服务,同时测试设备所在地区未被Firebase Auth服务限制。

7. 临时关闭应用验证(仅测试用)

若以上步骤均无效,可暂时在Firebase控制台的Phone Authentication设置中关闭"应用验证"选项,测试OTP是否能正常发送。此方法仅用于排查问题,生产环境必须开启。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:00:07