Firebase App Check配置后Firestore仍权限异常,求调试解决方案
针对你遇到的启用App Check后Firestore仍报PERMISSION_DENIED(即使调试模式、全开放规则下仍失效)的问题,按以下步骤逐一排查:
确认调试Token完全匹配
查看Logcat中DebugAppCheckProvider输出的调试Token(格式类似123ABC...),复制该Token到Firebase控制台「App Check」→「调试令牌」中,确保无多余空格、大小写完全一致。很多时候复制时会带首尾空格,导致校验失败。检查App Check初始化时机
确保FirebaseAppCheck.getInstance().installAppCheckProviderFactory在所有Firestore操作之前执行。如果你的项目中有其他组件(如ContentProvider、自定义初始化逻辑)提前调用了Firestore,会导致请求未携带App Check Token。可以在Application的onCreate最开始执行App Check初始化,或者验证Firestore实例是在App Check初始化后才创建的。验证请求是否携带App Check Token
用抓包工具查看Firestore请求的HTTP Header,确认存在X-Firebase-AppCheck字段,且值为你添加的调试Token。如果没有该字段,说明App Check未正确注入请求,需检查初始化代码是否生效。检查Firebase控制台的App Check配置
- 进入「App Check」→「应用」,确认你的应用已启用「Play Integrity」和「调试提供者」;
- 进入「App Check」→「受保护的资源」,确认Firestore的状态为「强制执行」,且关联了正确的应用。
统一Firebase依赖版本
确保firebase-appcheck-playintegrity、firebase-appcheck-debug、firebase-firestore等依赖的版本完全一致(比如均使用最新稳定版)。版本不兼容会导致Token传递逻辑异常。更新模拟器的Google Play服务
使用带Google Play服务的模拟器镜像(如「Google Play」系统镜像),并确保Google Play服务是最新版本。旧版本的Play服务可能无法正常支持App Check的调试模式。
内容的提问来源于stack exchange,提问作者Bitwise DEVS

