我正在尝试从FirebaseStorage下载一些图片。
虽然我通过谷歌验证用户,但我还是得到了这个 错误:
E/StorageException: StorageException has occurred. User does not have permission to access this object. Code: -13021 HttpResult: 403
尝试下载图片时。
以下是规则:
service firebase.storage {
match /b/appname-e3a12.appspot.com/o {
match /{allPaths=**} {
allow read, write;
}
}
}
有人得到了答案吗?
答案 0 :(得分:3)
尝试
service firebase.storage {
match /b/appname-e3a12.appspot.com/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
答案 1 :(得分:1)
您的规则看起来不错,但如果您不确定,请尝试将allow read, write: if true;
置于规则的根目录。
我遇到了同样的问题,我不知道您尝试从哪个平台访问Firebase存储,但请检查代码中的引用样式。存储与数据库不同。 例如,在Android中,您应该访问如下文件:
StorageReference storageRef = FirebaseStorage.getInstance().reference().child("folderName/file.jpg");
不喜欢这样:
StorageReference storageRef = FirebaseStorage.getInstance().reference().child("folderName").child("file.jpg");
您还应该阅读David East的这篇博文:5 tips for Firebase Storage
答案 2 :(得分:1)
出现同样的问题,仅允许读/写是不够的,您还应该在Firebase控制台/身份验证/ SIGN0IN METHOD选项卡下启用匿名帐户,然后才能运行。
答案 3 :(得分:1)
您是否尝试使用Firebase的默认规则?
service firebase.storage {
match /b/<your-firebase-storage-bucket>/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
希望这有帮助!
答案 4 :(得分:0)
我正在添加此答案,希望对Firebase中的某人有帮助:
转到“存储”
选择“规则”标签,然后按如下所示编辑规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
// Allow access by all users
allow read, write: if request.auth != null;
}
}
}
注意:请确保您具有与上述完全相同的名称,请勿将{bucket}替换为您的项目名称。
祝您编程愉快!
答案 5 :(得分:-1)
将数据库规则更新为:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
只需删除此部分:if request.auth == null