【问题标题】:Firebase Bucketname Not AvailableFirebase 存储桶名称不可用
【发布时间】:2020-07-24 14:09:32
【问题描述】:

我在使用 Android 中的 Firebase 时遇到了一个奇怪的问题。我正在尝试将照片上传到 Firebase 存储,但出现以下错误:

E/UncaughtException: java.lang.IllegalArgumentException: The supplied bucketname is not available to this project.

在这行代码处:

StorageReference mStorageRef = mFirebaseStorage.getReferenceFromUrl("gs://mooseandroid-a9f96.appspot.com");

我确定存储桶名称与控制台中的名称相同。我什至尝试使用在 iOS 中使用 Swift 运行良好的存储桶名称。我还将规则更改为公开,以便任何人都可以读取和写入此存储桶。实时数据库适用于该项目。我现在没有选择,甚至不知道我还能尝试什么。

这是整个代码:

FirebaseStorage mFirebaseStorage = FirebaseStorage.getInstance();
StorageReference mStorageRef = mFirebaseStorage.getReferenceFromUrl("gs://mooseandroid-a9f96.appspot.com");
final StorageReference photoRef = mStorageRef.child("posts_images/mooseImg" + getCurrentDateTime() + ".jpg");
UploadTask uploadTask = photoRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
    // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
    // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
});

这是整个错误:

E/UncaughtException: java.lang.IllegalArgumentException: The supplied bucketname is not available to this project.
     at com.google.android.gms.common.internal.zzaa.zzb(Unknown Source)
     at com.google.firebase.storage.FirebaseStorage.zzz(Unknown Source)
     at com.google.firebase.storage.FirebaseStorage.getReferenceFromUrl(Unknown Source)
     at com.moose.android.AddPostActivity.onClick(AddPostActivity.java:163)
     at android.view.View.performClick(View.java:5702)
     at android.widget.TextView.performClick(TextView.java:10888)
     at android.view.View$PerformClick.run(View.java:22541)
     at android.os.Handler.handleCallback(Handler.java:739)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:158)
     at android.app.ActivityThread.main(ActivityThread.java:7229)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

【问题讨论】:

  • 使用StorageReference mStorageReference =FirebaseDatabase.getInstance().getReference().child("posts_images/mooseImg").child("put your image name here"); 存储文件只需写mStorageReference.putBytes(data);

标签: android firebase firebase-storage


【解决方案1】:

documentationgetReferenceFromUrl(String fullUrl) 声明:

如果 fullUrl 未与 FirebaseApp 关联,则会引发错误 用于初始化此 FirebaseStorage

使用此代码查看您的 FirebaseApp 中的存储桶名称:

    FirebaseOptions opts = FirebaseApp.getInstance().getOptions();
    Log.i(TAG, "Bucket = " + opts.getStorageBucket());

我希望它不会是mooseandroid-a9f96.appspot.com,而是project_info 文件的project_info 部分中的storage_bucket 值:

  "project_info": {
    "project_number": "816275527980",
    "firebase_url": "https://project-8693710910123456789.firebaseio.com",
    "project_id": "project-8693710910123456789",
    "storage_bucket": "project-8693710910123456789.appspot.com"
  },

【讨论】:

  • 这个答案对我有帮助,但请注意,如果您的 google-services.json 文件正确但仍然出现编译错误,请确保您的 firebase.init() 调用也使用正确的“storage_bucket”值。
【解决方案2】:

如果有人在之后更改存储桶 url,只需清理并重建 android 项目,它就为我解决了问题。

要清理,请转到 android studio 顶部导航栏上的 Build 选项卡 -> 单击 Clean Project。

要再次重建,请转到 android studio 顶部导航栏上的 Build 选项卡 -> 单击 Rebuild Project。

【讨论】:

  • 如果您的答案包含有关如何“清理和重建 android 项目”的详细说明,OP(和其他用户)可能会发现您的答案更有帮助。
猜你喜欢
  • 1970-01-01
  • 2021-08-24
  • 2019-12-22
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
相关资源
最近更新 更多