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

Android Kotlin项目Firebase Firestore权限拒绝问题求助

排查Firebase Firestore权限拒绝(PERMISSION_DENIED)问题

看起来你遇到了Firestore访问权限的棘手问题,我来帮你一步步梳理排查方向:

1. 优先确认安全规则的生效状态

你当前的规则写法理论上是开放所有权限,但有几个细节需要验证:

  • 规则更新延迟:Firestore规则修改后可能需要1-5分钟才能全局生效,修改后不要立刻测试,稍等几分钟再试。
  • 简化规则测试:暂时把规则简化为最开放的版本,避免匹配顺序或语法隐藏问题:
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    
  • 测试模式过期:如果你的项目一开始用的是测试模式(默认30天有效期),过期后会自动锁定权限,需要手动重新设置开放规则。

2. 验证Firebase项目与应用的关联一致性

  • google-services.json正确性:确认文件里的project_id、package_name和Firebase控制台的项目ID、你应用的包名完全一致(包名大小写、拼写不能有任何差异)。
  • 插件与依赖配置:你当前的依赖版本较老旧,存在兼容性风险,建议升级到稳定版本,更推荐用Firebase BOM统一管理版本:
    • 根目录build.gradle:
      buildscript {
        dependencies {
          classpath 'com.google.gms:google-services:4.3.15' // 升级到最新稳定版
        }
      }
      
    • 应用目录build.gradle:
      dependencies {
        // 用BOM统一管理Firebase版本,避免版本冲突
        implementation platform('com.google.firebase:firebase-bom:32.3.1')
        implementation 'com.google.firebase:firebase-firestore'
      }
      

3. 代码层面的小测试

你的查询代码逻辑没问题,但可以做个小测试缩小范围:

  • 尝试直接查询单个已知ID的文档,而不是整个集合:
    db.collection("environments").document("fMzUHbiK7QMsyEdnLmmfksu0j5L2")
      .get()
      .addOnSuccessListener { doc ->
        Log.d("success", "${doc.id} => ${doc.data}")
      }
      .addOnFailureListener { e ->
        Log.d("fail", "Single doc error: ", e)
      }
    
    如果单个文档也报错,说明问题不在集合查询逻辑上;如果成功,再检查集合查询的代码细节。

4. 排除网络与环境干扰

  • 你提到真机用4G网络依旧报错,基本可以排除公司防火墙的影响,但可以额外验证:在真机浏览器中访问firestore.googleapis.com,确认域名能正常打开。
  • 模拟器的SSL证书问题:如果模拟器无法验证SSL,尝试在模拟器设置中导入Zscaler证书,或者直接用真机调试,彻底排除模拟器环境问题。

5. 检查Firebase项目状态

登录Firebase控制台,确认你的项目处于正常启用状态,没有被暂停或限制;同时检查Firestore的使用配额是否充足(免费版配额一般足够测试使用,但也可以确认一下)。

内容的提问来源于stack exchange,提问作者Matthijs van Hest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:05:37