使用Firebase从公共存储中获取文件(由其他人运行)

问题描述 投票:0回答:1

我正在尝试将Firebase与Android应用程序一起使用,以连接到gs:// gcp-public-data-goes-16上用于GOES-16卫星数据的NOAA的公共存储桶,然后获取一个可供我随后使用的StorageReference浏览存储桶的内容并在其ABI-L2-ACMC目录下获取最新文件。

问题是,所有Firebase“入门”示例似乎都假设我想连接到存储桶I拥有,而不是存储桶somebody else拥有并可供使用公众。

基本上,我遇到了似乎是安全性,授权,权利和/或配置问题。

错误消息的文本表明这是存储分区的配置存在问题,但是我暂时假设NOAA知道它在做什么,而问题实际上就在我的末端(我的代码,我的应用程序的Firebase控制台设置或两者)。

更新

我感觉这个项目变得完全没有希望了。

事实证明,要访问存储桶及其中的文件,您必须登录Google帐户。好的,没问题...我有一个,就像每个拥有Android手机的人一样。然后,我遇到了一个看似无法逾越的砖墙,实际上更像是三峡大坝。

根据https://firebase.google.com/docs/auth/android/google-signin中的说明,除非您自己(以SHA1 Android签名证书的形式)由GCP存储桶的所有者明确列入白名单,否则您似乎无法从客户端登录。因为我不是它的所有者,所以发生这种情况的可能性几乎为零。

情况真的完全没有希望吗?此刻,看来我唯一的选择可能是做些非常糟糕的事情,例如让用户使用手机的浏览器手动获取数据文件(可以登录Google并避开客户端白名单限制)并将其保存到手机的/ Download目录本身。这将使该应用程序难以使用,由于易用性,给它加了两颗星。 :-(

当前代码:

FirebaseStorage storage = FirebaseStorage.getInstance("gs://gcp-public-data-goes-16");
StorageReference storageRef = storage.getReference();
storageRef.listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
          @Override
           public void onSuccess(ListResult result) {
               for (StorageReference fileRef : result.getItems()) {
                   Log.i("test", fileRef.toString());
               }
           }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception exception) {
                Log.e("test", "error listing bucket contents");
            }
        });

运行时出错:

java.io.IOException:{“错误”:{“代码”:400,“消息”:“您的存储桶尚未为Firebase存储正确设置。请访问'https://console.firebase.google.com/project/gcp-public-data---goes-16/storage/files'自动修复此问题,并然后重试。如果问题持续时间超过五分钟,则您可能没有足够的权限来修复该项目。您可以通过访问“ https://console.firebase.google.com/iam-admin/iam/project?project=gcp-public-data---goes-16”来检查权限。” }}

android firebase firebase-storage
1个回答
0
投票

您可以使用Google Cloud Services Java库来访问公共存储桶将此依赖项添加到您的Android应用程序的gradle中:

implementation 'com.google.cloud:google-cloud-storage:1.108.0'

检查此Accessing public data。如果要存储对象,请签出Downloading objects

© www.soinside.com 2019 - 2024. All rights reserved.