集成App Check with Play Integrity遇阻:Flutter应用请求未验证问题
Flutter集成App Check + Play Integrity未验证请求问题排查
针对你遇到的App Check控制台显示100%未验证请求、Play Integrity标签状态异常的问题,以下是可能遗漏的排查点:
1. 确认App Check初始化逻辑是否正确
- 必须在
Firebase.initializeApp()之后、任何Firebase服务调用之前初始化App Check,且生产环境要指定AndroidProvider.playIntegrity:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 生产环境启用Play Integrity,调试模式可切换为debug提供者 await FirebaseAppCheck.instance.activate( androidProvider: kReleaseMode ? AndroidProvider.playIntegrity : AndroidProvider.debug, ); runApp(const MyApp()); } - 检查是否存在调试代码残留:比如发布版本中错误使用了
AndroidProvider.debug,导致无法触发Play Integrity验证。
2. 验证Play Integrity与Firebase的关联状态
- 进入Google Play控制台「App integrity」>「Play Integrity」页面,确认已启用Play Integrity服务,且关联的Firebase项目ID与你使用的完全一致。选择项目后务必点击「保存」,配置同步可能需要1-2小时生效。
- 若页面仍显示「ready for Integration」,尝试重新关联Firebase项目,等待页面状态更新。
3. 核对应用签名SHA-256指纹
- 确保添加到Firebase App Check的SHA-256是Google Play应用签名密钥的指纹,而非你本地的上传密钥。可在Google Play控制台「App signing」页面的「App signing key certificate」栏复制该值。
- 在Firebase控制台的App Check设置中,确认Android应用的提供者已选择「Play Integrity」,而非SafetyNet或其他选项。
4. 检查google-services.json配置
- 重新下载的google-services.json中必须包含
app_check字段,示例如下:"app_check": { "android": { "play_integrity": { "enabled": true } } } - 若缺少该字段,回到Firebase控制台的App Check设置页面,重新保存配置后再下载json文件。
5. 确认应用发布渠道与版本
- 确保你测试的是Google Play发布版本(包括正式版、测试版),且版本已通过Google Play的应用签名流程。本地debug版本默认使用调试提供者,需单独注册调试令牌。
- 若使用测试渠道,需确保测试设备已在Firebase控制台注册调试令牌,且代码中针对调试环境正确启用了
AndroidProvider.debug。
6. 检查Play Integrity API权限与配额
- 登录Google Cloud控制台,确认Firebase项目的服务账号(如
firebase-adminsdk-xxx@xxx.iam.gserviceaccount.com)已拥有「Play Integrity API User」角色。 - 查看Play Integrity API的配额使用情况,确认调用未被限制(路径:APIs & Services > Dashboard > Play Integrity API)。
7. 查看应用日志定位错误
- 使用Android Studio Logcat过滤「FirebaseAppCheck」或「PlayIntegrity」关键词,查找初始化或令牌请求过程中的错误信息。常见错误包括:包名不匹配、签名密钥不一致、API未启用、网络拦截等。
8. 等待服务同步延迟
- Google Play与Firebase之间的配置和统计数据同步存在延迟,发布应用后建议等待24小时再查看App Check控制台的验证数据。
内容的提问来源于stack exchange,提问作者Trick37
相关产品推荐
相关产品推荐

