我如何使用管理 API 生成带有令牌的 "Download URL",这就是我想要的吗?

How can I generate a "Download URL" with a token using the management API, and is that what I want?

我正在尝试构建一个 Firebase 管理实用程序,我可以使用它来将文件上传到 Firebase 存储,然后 return 一个长期存在的 URL 我可以将其存储在 Firebase 实时数据库中以进行访问这个文件。

我相信我可以在 Firebase 控制台中执行此操作,方法是转到我的项目控制台,单击左侧的 Storage,然后单击 Upload File。文件上传后,我可以通过选择列表中的文件打开右侧信息窗格,然后展开 File Location 部分来获得 URL。

在那部分中有一个 Download URL,它似乎是一个长期存在但可撤销的 URL,其中包含某种类型的令牌。这 URL 可以安全地存储在数据库中以进行长期存储吗?它看起来确实与 return 从文件 upload api 编辑的 URL 相同,另一个 Google 代码实验室(用于 Flutter)显示存储在实时数据库中。

但是,我不知道如何从 Firebase Storage Management API 生成那种类型的 URL。我正在使用 NodeJS,但它应该适用于 API AFAIK 的所有版本。我只能找到一个 getSignedUrl 调用,它似乎 return 与 URL 不同,并且似乎有时间限制,并且包含对服务帐户的 link...不是我想存储在数据库中的内容。

let bucket = admin.storage().bucket();
bucket.upload('innovation3.jpeg', {destination: 'image_assets/innovation3.jpeg'},
  function(err, file) {
    file.getSignedUrl({action: 'read'},
    function(err, url) {
      console.log('Url: ' + url);
    })
  });

是否可以从管理 API 中获取此 URL,或者我是否需要使用其他方法。推荐什么?

使用 Firebase Admin SDK(由 Cloud Storage SDK 提供支持)创建的签名 URL 不同于由 Firebase 客户端 SDK 创建的下载 URL。它们具有相同的通用目的,但您可以期望它们看起来彼此不同。它们都可以安全地长期存储,除非您应该知道 Signed URLs 有一个到期日期,您没有在调用中指定。在那种情况下,我不知道有效到期时间是多少。

每次调用 getSignedUrl 都会生成一个新的 URL。文件不只有一个。