Firebase 云存储

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

我面临一个问题,我正在读取保存在 Firebase 存储中的图像并将其放入 pdf 中

  List<Uint8List> images = [];
  for (int i = 0; i < currentOrder.imageNames.length; i++) {
    await storageRef
        .child(
            'Orders/${currentOrder.orderId}/${currentOrder.imageNames.elementAt(i)}')
        .getData()
        .then((value) => {
              images.add(value!),
            });
  }

我收到以下错误

Error: ClientException: XMLHttpRequest error., uri=https://firebasestorage.googleapis...

当我单击链接时,它会下载图像 - 所以一切都正确 但是 GCP 中有一个配置,我将 cors.json 添加到我的项目中 具有以下特点:

[
    {
      "origin": ["*"],
      "method": ["GET"],
      "maxAgeSeconds": 3600
    }
  ]

然后在 gcp 终端上运行它

gsutil cors set cors.json gs://<bucket-name>

但我收到此错误

在 gs://
上设置 CORS ServiceException:401 匿名调用者没有对 Google Cloud Storage 存储桶的 storage.buckets.update 访问权限。资源上的权限“storage.buckets.update”被拒绝(或者它可能不存在)。

我试过了

gcloud auth login
gcloud auth application-default login

然后重新运行 cors set cmd 但它不起作用

另请注意,我在 gcp 上有另一个项目,我可以在其中从存储桶中读取内容并下载文件等。(我一年前做过该项目)

但是现在这个新项目无论我做什么都不起作用

flutter google-cloud-storage firebase-storage
1个回答
0
投票

我也在GCP中尝试了以下方法,但没有成功

ServiceException:401 匿名调用者没有对 Google Cloud Storage 存储桶的 storage.buckets.update 访问权限。资源上的权限“storage.buckets.update”被拒绝(或者它可能不存在)。

1 - 登录 GCP 2 - 转到 IAM 和管理 -> 角色 -> 创建角色 -> 填写信息 -> 添加权限 按服务过滤:firebasestorage 检查所有权限

最重要的是添加'storage.buckets.update'

3 - 现在转到 IAM 和管理 -> 服务帐户 -> 创建服务帐户 -> 填写字段 -> 创建并继续 -> 角色 -> 自定义 -> 选择创建的角色 -> 继续 -> 完成

4 - 现在显示新的服务帐户 -> 点击菜单按钮 -> 管理密钥 -> 添加密钥 -> JSON Json已下载

5 - 打开终端 -> 打开编辑器 -> 将 JSON 上传到 cors.json 目录

6 - 运行以下命令: gcloud auth [serviceaccountname]@appspot.gserviceaccount.com --key-file=[jsonfilename].json

不包括括号[]

7 - 然后运行第二个命令:

gsutil cors 设置 cors.json gs://xxxx.appspot.com

我仍然遇到同样的错误

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