使用google firebase存储而无需身份验证

时间:2016-05-25 07:08:22

标签: android firebase firebase-cloud-messaging

我想在没有服务器的情况下向所有用户分享一些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 个答案:

答案 0 :(得分:7)

https://console.firebase.google.com使用新的Firebase存储控制台。浏览文件夹并选择上传的文件。在“文件位置”标签下,有一个名为下载网址的字段。点击它进行复制,你就可以在你的网站上链接到这个文件。

只要规则标签中没有写入权限设置,您就应该能够公开使用这些文件。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我将它用于最新的firebase

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

我只是删除条件