Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name

Posted

技术标签:

【中文标题】Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name【英文标题】:Firebase Storage Error: Permission denied. Could not access bucket 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 集成相关的问题。 【参考方案1】:

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

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

【讨论】:

以上是关于Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name的主要内容,如果未能解决你的问题,请参考以下文章

Firebase存储错误中的权限被拒绝[重复]

Firebase 注销显示权限被拒绝错误。

Firebase存储链接权限被拒绝

无法上传到 Firebase 存储/权限被拒绝

Flutter web:实施 Firebase 应用检查后出现 403 权限被拒绝错误

Android Firebase 数据库错误:权限被拒绝