如何为上传到 firebase 存储的文件生成访问令牌?

Rof*_*fls 8 node.js firebase firebase-storage firebase-admin

我可以使用 firebase-admin 通过 nodejs 将文件上传到我的 firebase 存储桶,但是当我转到 firebase UI 时,我无法打开该文件。我注意到通过 firebase UI 上传的文件会自动生成一个访问令牌,但没有通过 nodejs 上传的文件。

我已经尝试了几种方法,例如使用下载令牌设置元数据并在上传文件后公开文件。没有一个奏效。

如何通过 API 调用生成访问令牌,而不必为每个上传的文件点击生成令牌?

Raw*_*-25 7

我使用下面的命令,它工作得很好

    const uuidv4 = require('uuid/v4');
    const uuid = uuidv4();
    metadata: { firebaseStorageDownloadTokens: uuid }
Run Code Online (Sandbox Code Playgroud)


Nat*_*teQ 5

为了进一步澄清@Rawan-25 的答案,您想要的是:

bucket.upload(filename, {
  destination,
  metadata: {
      metadata :{
        firebaseStorageDownloadTokens: uuidv4(),
     }
  },
})
Run Code Online (Sandbox Code Playgroud)

这是根据这个Github 问题。


Cor*_*yer 5

截至 2020 年 7 月的完整答案:

在将文件上传到 Firebase Cloud Storage(又名 Google Cloud Storage)时,可以生成 uuid 并将其用作令牌

首先导入这个包:

const uuidv4 = require('uuid/v4');
Run Code Online (Sandbox Code Playgroud)

或者

const { v4: uuidv4 } = require('uuid');
Run Code Online (Sandbox Code Playgroud)

然后,在上传文件之前生成一个唯一的 id:

const uuid = uuidv4();
Run Code Online (Sandbox Code Playgroud)

最后,上传您的文件:

最重要的是嵌入

metadata: { firebaseStorageDownloadTokens: uuid, }
Run Code Online (Sandbox Code Playgroud)

上传功能的元数据字段中

await admin.storage().bucket().upload(filePath, {
                            destination: thumbFilePathForUpload,
                            metadata: {
                                metadata: {
                                    firebaseStorageDownloadTokens: uuid,
                                }
                            },
                        });
Run Code Online (Sandbox Code Playgroud)

为了检查它是否有效,请直接从 Firebase 控制台单击新上传的文件,您的文件中应该有一个蓝色的可点击链接。您还可以在预览下方的File Location下找到访问令牌。

例如:

在此处输入图片说明

  • 我用过这个,而且有效。我只需将导入行更改为 `const { v4: uuidv4 } = require('uuid');`。 (3认同)