Firebase删除文档始终抛出PERMISION_DENIED权限错误排查求助
解决Firestore删除文档时PERMISSION_DENIED的问题
检查Firestore安全规则的准确性
确保你的安全规则确实允许已登录用户删除自己的文档,常见的错误写法会导致权限失败:
- 错误示例:仅开放创建/读取权限,未包含删除操作
match /users/{userId} { allow create, read: if request.auth != null && request.auth.uid == userId; } - 正确示例:明确包含delete权限,且匹配文档ID与用户UID
match /users/{userId} { allow create, read, update, delete: if request.auth != null && request.auth.uid == userId; }
另外要注意:如果你的用户文档内存储了uid字段,不要误把规则写成request.auth.uid == resource.data.uid,除非你确认文档内的uid与文档ID完全一致,否则直接用request.auth.uid == userId更可靠。
确认执行删除时用户仍处于登录状态
撤销访问凭据的流程中,可能存在异步操作顺序错误:比如先调用了signOut()或撤销token,再执行文档删除,此时用户身份已失效,触发权限错误。
检查代码逻辑,确保db.collection(USERS).document(uid).delete().await()执行时,FirebaseAuth.getInstance().currentUser不为null,且传入的uid与当前用户UID一致。
验证安全规则是否已正确部署
在Firebase控制台修改规则后,一定要点击发布按钮,否则旧规则仍然生效。可以在控制台「规则」页面查看当前生效的规则版本,确认修改后的规则已上线。
排查文档存在性与权限触发逻辑
如果目标文档不存在,部分场景下Firestore会优先返回权限错误而非「文档不存在」错误。可以先添加读取该文档的操作,确认用户能正常读取自己的文档,再尝试删除,以此排除文档不存在导致的混淆性错误。
内容的提问来源于stack exchange,提问作者Olegario López
相关产品推荐
相关产品推荐

