小米Redmi Note 9S使用Firebase AppCheck+Play Integrity遇403验证失败
解决Firebase AppCheck(Play Integrity)403 "App attestation failed" 问题(单设备案例)
针对你遇到的单个小米Redmi Note 9S(Android 12)用户无法获取AppCheck令牌的情况,以下是可落地的排查和解决步骤:
1. 检查用户设备的Play服务版本
- 让用户前往「设置」→「应用管理」→「Google Play服务」,查看版本号。Play Integrity对Play服务版本有最低要求,建议用户更新到最新稳定版(可通过Play商店搜索「Google Play服务」手动更新)。
- 部分小米设备会限制Play服务自动更新,需要用户手动触发更新操作。
2. 重置应用的Play Integrity验证状态
- 指导用户清除应用的存储和缓存:进入「设置」→「应用管理」→ 找到你的应用 →「存储」→「清除缓存」+「清除数据」(提前提醒用户备份应用内重要数据)。
- 让用户重启设备后重新打开应用,尝试重新获取令牌。
3. 排查小米设备的特殊系统限制
- 检查用户是否开启了「隐私保护」中的权限限制,确保你的应用已获得「联网权限」「查看应用使用情况」等必要权限(Play Integrity验证需要与系统服务交互并联网)。
- 关闭小米的「省电模式」或「超级省电」,这类模式可能会限制Play服务在后台的运行,导致验证流程中断。
- 确认用户未开启「应用双开」或「分身」功能,分身应用的签名环境可能无法通过Play Integrity验证。
4. 检查用户的Play商店状态
- 让用户确认已登录正规的Google账号,且Play商店处于正常登录状态(无账号异常、区域限制提示)。
- 指导用户进入Play商店的「设置」→「关于」,多次点击「Play商店版本」触发版本更新,确保Play商店是最新版。
5. 强制刷新令牌(排查用)
- 给该用户提供临时测试版本,在调用
getToken()时添加forceRefresh: true参数,强制刷新AppCheck令牌:const token = await firebase.appCheck().getToken(true); - 若强制刷新后成功,说明用户设备的旧令牌缓存存在异常,清除应用缓存即可解决。
6. 后台核对Firebase配置
- 登录Firebase控制台,再次确认AppCheck的「Play Integrity」提供者配置正确(包名、签名证书指纹与Play商店发布的应用完全一致),虽然多数用户正常,但可排除配置遗漏的极小概率情况。
- 检查Firebase的AppCheck请求配额,确认未达到每日上限(单个用户失败大概率与配额无关)。
内容的提问来源于stack exchange,提问作者Lucas Basquerotto
相关产品推荐
相关产品推荐

