首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Firebase从公共存储中获取文件(由其他人运行)

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

Stack Overflow用户
提问于 2020-05-21 01:04:59
回答 1查看 136关注 0票数 0

我试图使用Firebase和一个安卓应用程序连接到NOAA的公共存储桶上,获取gs://gcp--公共数据--gcp-16上的gs 16卫星数据,然后获得一个StorageReference,然后我可以使用它来浏览存储桶的内容,并获取ABI-L2-ACMC目录下的最新文件。

问题是,所有的Firebase“入门”示例似乎都假设我希望连接到存储桶I拥有的存储桶,而不是其他人拥有的存储桶&提供给公众。

基本上,我遇到了一个安全、授权、权限和/或配置问题。

错误消息的文本表明,这是桶的配置出现问题,但我现在假设NOAA知道它在做什么,问题确实在我的末尾(我的代码,我的应用程序的Firebase控制台设置,或者两者兼而有之)。

更新

我觉得这个项目已经完全没有希望了。

事实证明,要访问存储桶和其中的文件,您必须登录到Google帐户。好吧没问题..。我有一个,每个人都有安卓手机。然后,我遇到了一堵看似不可逾越的砖墙,那真的更像是三峡大坝。

根据https://firebase.google.com/docs/auth/android/google-signin的说明,您似乎无法从客户端登录,除非客户端本身(以其SHA1 Android签名证书的形式)被GCP桶的所有者显式地白化。因为我不是它的主人。

情况真的是这样完全没有希望吗?目前看来,我唯一的选择可能是做一些非常糟糕的事情,比如让用户使用手机浏览器手动获取数据文件(这可以登录到Google并避开客户端白名单限制),并将其保存到手机的/Download目录中。这会使这个应用程序的使用变得如此糟糕,会给它两颗星,因为它的可用性差。:-(

现行代码:

代码语言:javascript
复制
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‘自动修复此问题,然后重试。如果问题持续时间超过5分钟,您可能没有足够的权限修复项目。您可以通过访问’https://console.firebase.google.com/iam-admin/iam/project?project=gcp-public-data---goes-16‘来检查权限。”}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 04:56:04

您可以使用库访问公共桶

将这种依赖添加到Android应用程序的gradle中:

代码语言:javascript
复制
implementation 'com.google.cloud:google-cloud-storage:1.108.0'

看看这个访问公共数据

如果您想存储对象,请查看下载对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61925456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档