首页 > 解决方案 > Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name

问题描述

使用 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

{ "error": { "code": 400, "message": "Permission denied. 无法访问存储桶 my-bucket-name。请通过访问 Firebase 控制台中的存储选项卡为您的存储桶启用 Firebase 存储,并确保您有足够的权限来适当地提供资源。” } }

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

在此处输入图像描述

我在 Firebase 存储中的规则是:

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

有任何想法吗?

标签: google-cloud-platformfirebase-storageangularfire2

解决方案


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

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

推荐阅读