Firebase Storage报Object不存在错误 安全规则b与bucket参数填写咨询
问题排查
1. 安全规则的错误理解
你对Firebase Storage默认规则的语法存在误解,/b/{bucket}/o部分的参数不需要手动替换:
b是Firebase Storage规则的固定路径前缀,不是占位符,不允许修改{bucket}是系统内置通配符,会自动匹配你项目关联的所有Cloud Storage存储桶名称,不需要手动填写实际值
你此前将这段路径修改为/user/{currentID}/o完全不符合规则语法,会直接导致安全规则无法匹配任何存储路径,完全失效。
2. 404报错的真实原因
你当前贴出的Java代码是**Firebase Firestore(云数据库)的读操作代码,和本次报错的Firebase Storage(云存储)**属于两个完全独立的服务。本次报错是你项目中未贴出的Storage读写代码,尝试访问的存储文件路径不存在导致的,和当前贴的Firestore代码无关。
正确配置方案
第一步:恢复合法的Storage安全规则
如果你只需要限制登录用户才能读写存储资源,直接用初始的默认规则即可:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
如果后续需要做用户级的路径隔离(比如每个用户只能读写自己UID目录下的文件),可以在内层路径增加匹配规则,示例:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /user/{userId}/{allPaths=**} { allow read, write: if request.auth != null && request.auth.uid == userId; } } }
第二步:排查Storage相关业务代码
找到你项目中操作Firebase Storage的代码(一般是上传/下载图片、文件的逻辑),检查你拼接的文件存储路径是否和Firebase Storage控制台中实际存在的路径一致,确认路径没有拼写错误、目标文件没有被提前删除。
内容的提问来源于stack exchange,提问作者Disha Namdev
相关产品推荐
相关产品推荐

