Firebase 存储:即使具有 public 访问权限也无法下载文件

Firebase Storage: Fail to download file even with public access

我正在尝试测试 Firebase 存储。我手动上传了 images/egg.jpg。

我构建了一个简单的 Android 应用来测试 Firebase 指南中的代码以下载图像。只是一个启用程序的按钮。

文件下载失败,我得到的只是来自 onFailure() 的异常,显示“用户无权访问此对象”。

我看到了类似的问题,解决方案是通过规则允许任何人进行读写访问,所以我复制了它们,如下所示。

service firebase.storage {
  match /b/savephoto-a1cc3.appspot.com/o {
    match /{allPaths=**} {
      // Allow access by all users
      allow read, write;
    }
  }
}

这是活动代码

private StorageReference pathRef = FirebaseStorage.getInstance().getReference().child("images/egg.jpg");
private ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.imageView = (ImageView) this.findViewById(R.id.imageView);
}

public void getImage(View v){
    File localFile;
    try {
        localFile = File.createTempFile("images","jpg");
        pathRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                //Local temp file has been created
                Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                //handle error
                Toast.makeText(MainActivity.this, e.getMessage()+"\n"+e.getCause(), Toast.LENGTH_LONG).show();
            }
        });
    }catch (IOException exception){
        Toast.makeText(this, "IOEXCEPTION", Toast.LENGTH_SHORT).show();
    }
}

为了确保我也将这些权限添加到清单中。

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

为什么我不能下载该死的文件?

尝试更改:

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