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

Firebase AppCheck异常:近半数请求无效,如何定位涉事应用及原因?

定位App Check无效请求问题的方法

一、区分Android/iOS应用的无效请求

  • 给两个平台的请求添加平台标识:
    • Android端:初始化App Check时,给请求附带platform: "android"的自定义属性,或在Firebase Analytics中设置对应用户属性,关联App Check请求日志。
    • iOS端:同理添加platform: "ios"标识,方便在控制台直接筛选区分。
  • 解析实时数据库规则日志:开启数据库规则日志后,日志中的userAgent字段能区分客户端——Android请求通常带okhttp、应用包名;iOS请求则包含CFNetwork、Bundle ID相关信息,据此判断无效请求所属平台。

二、排查无效请求的具体原因

  • 检查令牌生成逻辑:
    • Android:确认Play Integrity/SafetyNet Provider配置正确,Manifest里的API密钥无误,设备满足验证条件(未root、Google Play服务正常)。代码中捕获AppCheckTokenException,打印具体错误(如令牌过期、验证失败)。
    • iOS:确认DeviceCheck Provider配置正确,Bundle ID与Firebase控制台一致,设备支持DeviceCheck(iOS 11.0+)。在令牌获取的错误回调中记录失败原因(网络问题、验证不通过等)。
  • 验证数据库规则:确保规则中正确校验App Check令牌,比如包含request.app != null,若有平台权限区分,需确认规则逻辑无误。
  • 查看App Check事件日志:在Firebase控制台App Check页面的“事件”标签,查看令牌验证失败的具体原因(无效令牌、过期、Provider未配置等),结合平台筛选定位对应问题。

三、更精准的筛选方式

  • 自定义Cloud Logging过滤器:
    针对App Check验证失败日志,设置过滤条件:
    resource.type="firebase_database" AND protoPayload.status.code=403 AND protoPayload.appCheck.status!="VALID"
    
    再追加protoPayload.userAgent:"okhttp"(Android)或protoPayload.userAgent:"CFNetwork"(iOS),实现精准的平台+失败请求筛选。
  • 制作Analytics自定义报表:创建以platform为维度、“App Check验证失败”为指标的报表,直接对比两个平台的失败率,快速锁定问题平台。
  • 代码中添加自定义日志:在App Check令牌获取失败或请求被拒绝时,记录含平台、错误码、描述的日志,上传到Crashlytics或Cloud Logging,再通过日志工具按平台过滤,获取详细错误数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:24