5

我想与没有服务器的所有用户共享一些 json 文件,并且我使用 google firebase 存储服务(没有用户身份验证)。代码:

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://xxxxxx.appspot.com/xxx-main.json");
Task<byte[]> task = storageRef.getBytes(1000000);
while (!task.isComplete())
    StaticTools.sleep(100);

byte[] b=task.getResult();

但它引发了一个例外:

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

存储规则:

service firebase.storage {
  match /b/XXXXXX.appspot.com/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
4

4 回答 4

9

在https://console.firebase.google.com使用新的 Firebase 存储控制台。浏览您的文件夹并选择您上传的文件。在 File location 选项卡下,有一个名为Download URL的字段。单击它进行复制,您将能够在您的网站中热链接到该文件。

只要规则选项卡中没有写入权限设置,您应该可以公开使用这些文件。

于 2016-05-25T08:57:12.120 回答
3

我将它用于它工作的最新 Firebase

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

我只是在 if 条件下删除。

于 2018-05-18T18:46:34.293 回答
3

Xavier 对下载 URL 的回答将起作用。

您的规则应该允许公开阅读,但您的规则最多可能需要 5 分钟才能在整个系统中更新。

于 2016-05-25T19:57:16.257 回答
0

看起来 Google Firebase 存储仅适用于经过身份验证的用户。如果您的应用不需要用户身份验证,您可以设置匿名身份验证。

于 2016-05-25T07:19:22.040 回答