首页 > 解决方案 > Android 客户端上的 Firestore 集合组 PERMISSION_DENIED

问题描述

按照文档测试收集组(https://firebase.google.com/docs/firestore/security/rules-query#collection_group_queries_and_security_rules

Firestore 安全规则

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
   match /forums/{forumid}/posts/{post} {
      allow read: if true;
    }
  }
}

在 Android 应用上查询(使用 Firestore 19.0.1)

FirebaseFirestore.getInstance().collectionGroup("posts").get().addOnSuccessListener { queryDocumentSnapshots ->
    Log.d(TAG, "queryDocumentSnapshots " + queryDocumentSnapshots.size())

}.addOnFailureListener {
    Log.d(TAG, "exception" + it)
}

获得异常 PERMISSION_DENIED: 权限缺失或不足。

标签: androidfirebasegoogle-cloud-firestorefirebase-security

解决方案


您需要在路径中添加通配符变量以使其适用于集合组查询。参考文档 https://firebase.google.com/docs/firestore/security/rules-query#secure_and_query_documents_based_on_collection_groups

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
   match /{path=**}/posts/{post} {
      allow read: if true;
    }
  }
}

推荐阅读