【问题标题】:Getting permission error on Firebase storage in Android?在 Android 中获取 Firebase 存储的权限错误?
【发布时间】:2020-08-08 16:49:59
【问题描述】:

所以我使用以下代码 sn-p 将文件上传到 Firebase 存储:

FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference parentReference = storage.getReference();
    Uri file = Uri.fromFile(new File(PATH));
    StorageReference childReference = parentReference.child("kas_data");
    UploadTask uploadTask = childReference.putFile(file);
    uploadTask.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            //
        }
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            //
        }
    });

上传成功。检查 firebase 控制台,我看到文件已成功上传。现在我想用下面的代码sn-p下载它:

FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference parentReference = storage.getReference();
        StorageReference childReference = parentReference.child("kas_data");
        File localFile = new File(PATH);
        childReference.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                //
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) { 
                //
            }
        });

但我收到以下错误消息:

com.google.firebase.storage.StorageException: User does not have permission to access this object.

当我在 Firebase 存储规则部分使用此规则时:

rules_version = '2';
service firebase.storage {
    match /{allPaths=**} {
        allow read, write;
    }
}

我该如何解决这个问题?

【问题讨论】:

    标签: android firebase-storage


    【解决方案1】:

    你可以直接使用 Glide 下载图片,只需添加:

    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
        implementation 'com.github.bumptech.glide:glide:4.11.0'
    

    然后转到您的应用 build.gradle

    StorageReference mStorageRef = FirebaseStorage.getInstance().getReference();
                final StorageReference imgRef = mStorageRef.child("Imagesfolder/"+"Imagename"+"");
                GlideApp.with(showProducts.this)
                        .load(imgRef)
                        .into(imageview);
    

    这会将图像下载到图像视图中!

    【讨论】:

      【解决方案2】:

      我真的不确定您的上传任务是如何成功的。您需要在规则中添加条件:

      match /{allPaths=**} {
          allow read, write: if true;
          //Or whatever condition you want to allow/disallow uploading and downloading
      }
      

      【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 2022-09-23
      • 2018-10-26
      • 2021-12-30
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多