使用凭证令牌的Node.js Google云存储身份验证

时间:2020-06-23 15:08:26

标签: node.js google-cloud-platform google-cloud-storage

我正在尝试使用凭据令牌对Google云存储进行身份验证。 在node.js GCS api文档中的任何地方都找不到有关如何执行此操作的示例。 他们指示生成并下载包含您的私钥的json文件,然后像这样链接到其在文件系统上的路径:

styleURLS

这很好用。

但是我不想将密钥保存为JSON文件,而是创建凭据并将其保存为环境变量,如下所示:

const storage = new Storage({keyFilename: "key.json"});

我尝试使用服务帐户HMAC访问密钥从存储桶的设置,从互操作性菜单中获取此令牌。

I tried getting this token from the settings of the bucket, from the interoperability menu, using service account HMAC access keys

当我尝试使用上述身份验证方法从存储桶中上载/删除文件时,出现以下错误:

错误:错误:0909006C:PEM例程:get_name:无起始行

感谢对此事的任何帮助

1 个答案:

答案 0 :(得分:1)

  1. 错误

    错误:错误:0909006C:PEM例程:get_name:无起始行

实际上是由于我下载了一段时间的dotenv ohmyzsh插件引起的,只是忘记了。很难调试。原来google密钥中有\ n并且ohmyzsh dotenv插件无法正确解析它们。所以删除它对我有用。


(如果您使用JSON api)(很可能是),这些是您需要进行身份验证的凭据,因此,如果您不喜欢,则只需获取相关信息并将其放入项目中的.env文件中即可。将路径放入json文件:

const gc = new Storage({
      projectId: process.env.GOOGLE_STORAGE_PROJECT_ID,
      scopes: 'https://www.googleapis.com/auth/cloud-platform',
      credentials: {
        client_email: process.env.GOOGLE_STORAGE_EMAIL,
        private_key: process.env.GOOGLE_STORAGE_PRIVATE_KEY
      }
})

对于如何使用令牌+机密进行身份验证仍然不是100%可靠。 我正在接近答案,如果找到它,以后会更新此帖子。发布有用的链接:google-auth-library-nodejs希望有人击败我:)