【问题标题】:Firebase Storage Error: Permission denied. Could not access bucket my-bucket-nameFirebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name
【发布时间】:2019-07-30 20:48:14
【问题描述】:

使用 Angular 7,我正在尝试使用 Angularfire2 上传图片

ts

uploadFile(event) {
    const file = event.target.files[0];
    const filePath = 'name-your-file-path-here';
    const ref = this.storage.ref(filePath);
    const task = ref.put(file);
  }

html

<input type="file" (change)="uploadFile($event)">

得到以下错误:

POST https://firebasestorage.googleapis.com/v0/b/my-bucket-name/o?name=name-your-file-path-here 400

{ “错误”:{ “代码”:400, “消息”:“权限被拒绝。无法访问存储桶 my-bucket-name。请通过以下方式为您的存储桶启用 Firebase 存储 访问 Firebase 控制台中的存储选项卡并确保您 有足够的权限来正确配置资源。" } }

我读到我必须在firebase-storage@system.gserviceaccount.com 控制台中添加一个存储管理员,但这并没有解决问题。

我在 Firebase 存储中的规则是:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

有什么想法吗?

【问题讨论】:

  • 你找到解决办法了吗?
  • 我了解到您正在尝试通过 AngularFire2 for Firebase 将图像上传到您的 Cloud Storage 存储桶,这样做时会引发权限错误。我建议您通过免费的Firebase support 调查您的问题。这将为您的查询提供最有效和最合适的支持方式,因为该团队最适合解决与 Google Cloud Platform 产品的 Firebase 集成相关的问题。

标签: google-cloud-platform firebase-storage angularfire2


【解决方案1】:

如果我没记错您使用的是 AngularFire 并且在他们的 documentation 中,您会看到他们在提供程序声明中使用 my-bucket-name 作为占位符。将此替换为您的存储桶名称(我假设它在您的环境变量中)。

@NgModule({
  declarations: [],
  imports: [],
  providers: [
    { provide: BUCKET, useValue: environment.firebase.storageBucket },
  ],
  bootstrap: []
})

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2017-10-29
    • 2017-06-06
    • 2017-12-04
    相关资源
    最近更新 更多