首页 > 解决方案 > Firebase 云存储:权限被拒绝。检索 downloadURL 时无法执行此操作 firebase

问题描述

我有一个功能可以成功地将图像上传到我的云存储桶。

使用另一个功能,我想获取图像的 URL 以在我的页面上显示它(使用<img.../>

getImageUrl(id: string) {
    return this.storageRef.child('X/' + id ).getDownloadURL();

但是当我这样做时..我得到一个“无效”的 URL,当我复制 URL 并转到它时,我收到以下消息:

{
  "error": {
    "code": 403,
    "message": "Permission denied. Could not perform this operation"
  }
}

我在某处读到这可能是因为 URL 中没有附加令牌,但我该如何启用它呢?

标签: angularfirebasefirebase-storage

解决方案


在过去的几天里,我一直在尝试理解 Firebase 存储规则,但我不知道为什么,但是当我将编写和阅读的规则分开时,例如:

allow write: if request.auth != null && request.resource.size < 3 * 1024 * 1024;
allow read: if true;

代码运行良好,我可以使用 getDownloadURL() 进行读写,但是当我像这样一起使用它们时:

allow read, write: if request.auth != null && request.resource.size < 3 * 1024 * 1024;

我得到了和你一样的错误:

{
  "error": {
  "code": 403,
  "message": "Permission denied. Could not perform this operation"
  }

}

一起使用它们时我可以写,但是当我尝试使用 getDownloadURL() 读取文件时,问题就出现了。也许您可以尝试像我提到的那样分离规则,看看它是否有效。我希望它能解决你的问题。另外,不要忘记规则在设置后 5 分钟后 生效。祝你好运。


推荐阅读