Node.js 使用凭据令牌进行谷歌云存储身份验证

Ome*_*ich 7 node.js google-cloud-storage google-cloud-platform

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

const storage = new Storage({keyFilename: "key.json"});
Run Code Online (Sandbox Code Playgroud)

这效果很好。

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

const gc = new Storage({
    credentials: {
      client_email: process.env.CLIENT_EMAIL,
      private_key: process.env.SECRET_KEY
    }
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

感谢对此事的任何帮助

Ome*_*ich 4

  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
      }
})
Run Code Online (Sandbox Code Playgroud)

仍然不是 100% 确定如何使用令牌 + 秘密进行身份验证。我正在接近答案,如果我找到它,我会在将来更新这篇文章。发布一个有用的链接:google-auth-library-nodejs希望有人能打败我:)