Flutter应用中Firebase Phone Authentication突然失效,已启用App Check
解决Flutter Firebase Phone Auth + App Check失效问题
核心问题分析
从日志能明确两个关键故障点:
- Play Integrity服务绑定失败:
Integrity API error (-9): Binding to the service in the Play Store has failed,这是App Check依赖Play Integrity验证时的基础异常 - App Check token获取失败:因无法拿到有效token,系统使用占位符请求,导致Phone Auth因缺少合法应用标识符被拒绝
针对性解决方案
1. 修复Play Store版本/服务问题
- 打开设备的Google Play Store,进入「设置」→「关于」,检查并更新到最新版本
- 若更新后仍报错,清除Play Store缓存与数据:
- 进入设备「设置」→「应用和服务」→「查看所有应用」
- 找到「Google Play Store」,点击「存储」→「清除缓存」「清除数据」
- 重启设备后重新测试
2. 验证App Check配置正确性
- 确认Firebase控制台中App Check的Play Integrity配置:
- 进入Firebase控制台→目标项目→「App Check」
- 检查对应Flutter应用的Play Integrity配置是否完成,确保已添加正确的应用签名SHA-256指纹(调试版、发布版指纹都要配置,测试时别漏调试指纹)
- 检查Flutter端初始化代码,确保在Firebase初始化后正确启用App Check:
await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.playIntegrity, appleProvider: AppleProvider.appAttest, // iOS根据需求配置 );
3. 调试环境临时规避(仅用于测试)
如果是在调试设备上测试,临时切换App Check的Android提供者为调试模式,排除Play Integrity的干扰:
await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.debug, );
随后在Firebase控制台的App Check页面,将调试设备的SHA-256指纹添加到「调试令牌」中,验证Phone Auth是否能正常工作,以此排查是App Check配置问题还是Play Integrity服务问题。
4. 核对应用签名配置
- 确保Flutter应用打包使用的签名证书,与Firebase控制台「项目设置」→「应用」中配置的SHA-256指纹完全一致
- 调试时用Android Studio默认调试签名,发布版用正式签名,两者指纹都需在Firebase后台添加
5. 确认Play Integrity API已启用
进入Google Cloud控制台,搜索「Play Integrity API」,确保该API已为当前项目启用,未启用则点击「启用」按钮。
补充排查点
- 优先使用物理设备测试,模拟器常存在Play Store服务缺失或版本过低的问题
- 检查设备的Google Play服务是否为最新版本,进入「设置」→「应用和服务」→「Google Play服务」查看更新
- 刚配置的App Check可能存在缓存延迟,等待10-15分钟后再测试
内容的提问来源于stack exchange,提问作者naveed rehman
相关产品推荐
相关产品推荐

