首页 > 解决方案 > 如何从 Firebase 存储下载 url 中获取谷歌云存储公共 url?

问题描述

在我们的系统中,用户使用我们的移动应用程序将他们的图像上传到firebase存储,它是谷歌云存储桶的包装器,移动应用程序使用这个库进行上传,然后使用getDownloadUrl方法(在链接中描述)生成下载链接如下:

https://firebasestorage.googleapis.com/v0/b/{BUCKET_NAME}/o/{PARENT_FOLDER}/{IMAGE_NAME}?alt=media&token={UUID}

然后它将 URL 发送到我们的 BE 以存储链接。

Firebase 存储链接的下载时间比直接从谷歌云存储链接下载完全相同的图像要长得多,这可以从以下链接模板 https://storage.googleapis.com/{BUCKET_NAME}/{PARENT_FOLDER}生成/{IMAGE_NAME}

由于 GCP 链接更快(根据我们自己的基准测试),因此我们需要一种方法将 firebase 链接映射到其在 GCP 存储中的对应部分以提高下载性能。

上述进行映射的解决方案适用于 GCP 存储桶中公开可用的任何图像,但是,如果图像不公开可用,则可以使用 firebase 链接访问它(可能是因为它在链接中有令牌) ,但我们无法使用 GCP 链接访问它,它会给出以下错误:

<Error>
   <Code>AccessDenied</Code>
   <Message>Access denied.</Message>
   <Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>

我的问题是:我们如何从 GCP 存储链接访问图像,即使它不是公开的,由于安全原因我们不能公开所有图像?

标签: firebasesecuritygoogle-cloud-platformgoogle-cloud-storagefirebase-storage

解决方案


推荐阅读