android - Android 客户端上的 Firestore 集合组 PERMISSION_DENIED
问题描述
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: 权限缺失或不足。
解决方案
您需要在路径中添加通配符变量以使其适用于集合组查询。参考文档 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;
}
}
}
推荐阅读
- angular - 在 html 中显示对象并获取:“NgFor 仅支持绑定到 Iterables,例如数组”
- html - 如何在框元素中定位表格单元格
- haskell - 如何一起使用`let`和`where`?
- docker - 气流:如何从 docker 映像一起运行 webserver 和调度程序?
- dependencies - Bazel 不会构建依赖目标的文件
- microsoft-teams - Microsoft Graph API 获取频道成员
- html - 如何在按钮内显示左双引号?
- python - 在 scipy 中使用 numpy 数字化输出最小化问题
- sqlite - 将其连接到 sqlite 后无法构建我的应用程序
- python - 为什么我的 Gmail 帐户 Bruteforcer 无法正常工作?