【问题标题】:Secure external links for Firebase Storage on NodeJS server-sideNodeJS 服务器端 Firebase 存储的安全外部链接
【发布时间】:2016-06-16 20:07:04
【问题描述】:

我在生成指向存储在 Firebase 存储分区中的文件的外部链接时遇到问题。

我现在使用 Google Cloud Storage 有一段时间了,并使用 this 库(基于 this 答案)为常规存储桶生成外部链接,但在 Firebase 分配的桶上使用它不会好像没用。

我无法生成任何安全的 HTTPS 链接,并且不断收到证书验证错误NET::ERR_CERT_COMMON_NAME_INVALID,指出我的连接不是私有的。如果我从 HTTPS 中删除“S”,则链接有效。

注意:使用相同的凭据和私钥为我的项目中的其他存储桶生成链接,效果很好。只有 Firebase 存储桶拒绝接受我的签名...

【问题讨论】:

    标签: node.js https firebase google-cloud-storage firebase-storage


    【解决方案1】:

    我推荐使用官方的GCloud client,然后你可以使用getSignedUrl()获取文件的下载地址,如下:

    bucket.file(filename).getSignedUrl({
      action: 'read',
      expires: '03-17-2025'
    }, function(err, url) {
      if (err) {
        console.error(err);
        return;
      }
    
      // The file is now available to read from this URL.
      request(url, function(err, resp) {
        // resp.statusCode = 200
      });
    });
    

    根据Generate Download URL After Successful Upload,这似乎适用于 Firebase 和 GCS 存储桶。

    【讨论】:

    • 不知道Gcloud官方支持,谢谢!
    • 我收到此代码的“调用者没有 storage.objects.get 访问对象”错误。知道为什么吗?
    • 您是否创建了具有正确权限的服务帐户 (cloud.google.com/storage/docs/authentication#service_accounts)?对象本身可能没有该服务帐户的正确权限,因此您需要将它们添加到默认对象 ACL 和任何现有对象 (gsutil -m acl ch -r -u <your-service-account>@system.gserviceaccount.com:O gs://<your-firebase-storage-bucket>)
    • 新项目名为@google-cloud/storage,Bucket方法getSignedUrl不存在了。
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2015-12-14
    • 1970-01-01
    • 2020-09-28
    • 2017-08-28
    相关资源
    最近更新 更多