首页 > 解决方案 > Firebase 存储:获取公共存储的权限被拒绝 400

问题描述

我正在尝试使用 Android 应用程序中的 Firebase 存储。一开始一切都很好。现在我得到回应:

 {  
     "error": {
        "code": 400,
        "message": "Permission denied. Could not access bucket adiglehard.appspot.com. Please enable Firebase Storage for your bucket by visiting the Storage tab in the Firebase Console and ensure that you have sufficient permission to properly provision resources."  
      }
  }

上传代码为:

storage = FirebaseStorage.getInstance("gs://adiglehard.appspot.com/");
Uri file = Uri.fromFile(new File(mFile.getAbsolutePath()));
StorageReference storageRef = storage.getReference();
StorageReference riversRef = storageRef.child("images/" + file.getLastPathSegment());
uploadTask = riversRef.putFile(file);

// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
  @Override
  public void onFailure(@NonNull Exception exception) {
      // Handle unsuccessful uploads
      showToast("error!!!!");
      exception.printStackTrace();

  }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  @Override
  public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
      showToast("success!!!!");
  }
});

Firestore 规则是:

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with Google App Engine, this will also make
// files uploaded via GAE public.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

标签: androidfirebasegoogle-cloud-firestore

解决方案


我认为这是由于您的 Google 云控制台中缺少权限。您需要检查您是否有firebase-storage@system.gserviceaccount.com作为存储管理员。如果您没有,请添加它。它解决了我的问题。

PS:有各种关于 Firebase 存储权限问题的报告。Firebase 存储服务帐户被错误地从存储桶中删除,这导致请求最近出现错误。这是链接。

脚步:

  • 转到谷歌云控制台。
  • 导航到存储。
  • 选择您的存储桶,然后单击显示信息面板。

添加缺少的权限。如果需要,您还可以在 IAM & Admin 中添加缺少的权限。


推荐阅读