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

Flutter跨端App中Android端App Check随机出现无效请求问题

关于Flutter Firebase App Check Android端随机验证失败的问题排查建议

问题描述

使用Flutter、Firebase Firestore和Firebase Authentication开发的App,Android Play Store内部测试版每数小时会随机出现部分请求被标记为Unverified: invalid requests,其余请求验证正常;重启App后可恢复正常验证。而iOS TestFlight版本所有请求始终100%通过App Check验证。

现象细节

  • Android单设备:初始存在未验证请求,后续数小时内验证正常,之后随机再次出现未验证请求,循环往复
  • iOS单设备:所有请求始终处于已验证状态,无论经过数小时或数天

当前代码实现

Future<void> main() async{
  WidgetsFlutterBinding.ensureInitialized(); 
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform,);
  await FirebaseAppCheck.instance.activate(
      androidProvider: AndroidProvider.playIntegrity, appleProvider: AppleProvider.appAttestWithDeviceCheckFallback);
  runApp(AuthUserProviderWidget());
}

已完成的配置与尝试

  • 已将Google Play Console中App Signing的SHA-256配置至Firebase App Check的Android Play Integrity设置中
  • 尝试过的方案均未解决问题:
    • 开启App Check强制验证、更换Android设备,问题依旧;使用Upload key的SHA256完全无法适配App Check
    • 确认处于Release模式,升级Flutter至3.13.4、App Check至0.2.0及所有Firebase依赖
    • 在Firebase初始化和App Check激活后添加延迟、多次激活App Check、开启token自动刷新
    • 调用getToken(true)并开启token自动刷新后,错误频率降低,但App从后台长时间回到前台时仍会出现验证失败

排查建议

  1. 主动处理App生命周期的令牌刷新
    Play Integrity令牌有效期为1小时,Firebase App Check虽自动刷新,但Android后台唤醒时可能存在刷新不及时的情况。可以通过WidgetsBindingObserver监听AppLifecycleState.resumed状态,每次App回到前台时调用FirebaseAppCheck.instance.getToken(true)强制刷新令牌。

  2. 排查网络状态变化的影响
    当Android设备切换网络(WiFi/移动数据)或长时间断网后恢复,可能导致令牌刷新请求失败,后续请求使用过期令牌。可添加网络状态监听,在网络恢复时触发令牌刷新。

  3. 验证Play Integrity配置完整性
    确认Firebase控制台App Check的Android配置中,是否同时添加了App Signing密钥和Upload密钥的SHA-256(部分内部测试场景可能需要同时配置);检查App包名是否与Firebase控制台、Play Console完全一致。

  4. 查看Firebase错误详情
    前往Firebase控制台的App Check页面,查看未验证请求的具体错误原因(如令牌签名无效、包名不匹配、Play Integrity验证失败等),这些细节能直接定位问题根源。

  5. 切换Provider对比测试
    临时切换至AndroidProvider.debug或AndroidProvider.safetyNet(虽已弃用,但可用于对比),观察是否仍出现随机失败,判断是否为Play Integrity Provider的适配问题。

  6. 检查令牌缓存逻辑
    Firebase App Check会缓存令牌,可能存在缓存过期或更新不及时的问题。可尝试在App启动时强制刷新令牌,避免使用缓存中的旧令牌。

其他开发者反馈

目前有部分开发者在FlutterFire仓库反馈类似问题,集中在Play Integrity Provider下后台唤醒时令牌刷新不及时的场景,临时解决方案多为主动在App回到前台时强制刷新令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:58:15