【问题标题】:How can I generate access token to file uploaded to firebase storage?如何为上传到 Firebase 存储的文件生成访问令牌?
【发布时间】:2020-04-13 09:39:50
【问题描述】:

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

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

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

【问题讨论】:

  • 你解决过这个问题吗?

标签: node.js firebase firebase-storage firebase-admin


【解决方案1】:

我使用下面的命令,它运行良好

    const uuidv4 = require('uuid/v4');
    const uuid = uuidv4();
    metadata: { firebaseStorageDownloadTokens: uuid }

【讨论】:

    【解决方案2】:

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

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

    首先导入这个包:

    const uuidv4 = require('uuid/v4');
    

    const { v4: uuidv4 } = require('uuid');
    

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

    const uuid = uuidv4();
    

    最后,上传你的文件:

    最重要的是嵌入

    metadata: { firebaseStorageDownloadTokens: uuid, }
    

    上传函数的元数据字段中

    await admin.storage().bucket().upload(filePath, {
                                destination: thumbFilePathForUpload,
                                metadata: {
                                    metadata: {
                                        firebaseStorageDownloadTokens: uuid,
                                    }
                                },
                            });
    

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

    例如:

    【讨论】:

    • 我用过这个,它有效。我只需要将导入行更改为const { v4: uuidv4 } = require('uuid');
    【解决方案3】:

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

    bucket.upload(filename, {
      destination,
      metadata: {
          metadata :{
            firebaseStorageDownloadTokens: uuidv4(),
         }
      },
    })
    

    这是每个this Github 问题。

    【讨论】:

      【解决方案4】:

      目前无法使用 Firebase Admin SDK 生成访问令牌。您必须使用其中一个客户端 SDK 和 StorageReference 对象上的 getDownloadUrl 方法来执行此操作。该令牌仅适用于 Firebase 客户端应用。

      但是,您无法在 Firebase 控制台中为使用 Admin SDK 上传的文件加载预览是一个已知问题,而不是控制台的预期工作方式。 Firebase 团队知道这一点,但您仍然应该 file a bug report anyway with Firebase support 让他们知道您受到此问题的影响。

      【讨论】:

        【解决方案5】:

        经过广泛搜索后,我设法通过一篇 reddit 帖子找到了答案,该帖子提到了另一个堆栈溢出帖子,哈哈。

        请看答案#2! Get Download URL from file uploaded with Cloud Functions for Firebase

        【讨论】:

          猜你喜欢
          • 2021-06-25
          • 2021-01-27
          • 2022-08-18
          • 2020-09-16
          • 2016-03-22
          • 2020-01-28
          • 2021-01-13
          • 1970-01-01
          相关资源
          最近更新 更多