Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js使用凭据令牌进行google云存储身份验证_Node.js_Google Cloud Platform_Google Cloud Storage - Fatal编程技术网

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

Node.js使用凭据令牌进行google云存储身份验证,node.js,google-cloud-platform,google-cloud-storage,Node.js,Google Cloud Platform,Google Cloud Storage,我正在尝试使用凭据令牌通过google云存储进行身份验证。 在node.js GCS api文档中找不到有关如何执行此操作的示例。 他们指示生成并下载包含私钥的json文件,然后链接到文件系统上的路径,如下所示: const storage = new Storage({keyFilename: "key.json"}); 这个很好用 但是,我不想将密钥保存为JSON文件,而是创建凭据并将其保存为环境变量,如下所示: const gc = new Storage({

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

const storage = new Storage({keyFilename: "key.json"});
这个很好用

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

const gc = new Storage({
    credentials: {
      client_email: process.env.CLIENT_EMAIL,
      private_key: process.env.SECRET_KEY
    }
});
我尝试使用服务帐户HMAC访问密钥从bucket的设置、互操作性菜单获取此令牌

当我尝试使用上面的身份验证方法从bucket上传/删除文件时,我得到以下错误:

错误:错误:0909006C:PEM例程:获取名称:无起始行

谢谢你在这件事上的帮助

  • 错误

    错误:错误:0909006C:PEM例程:获取名称:无起始行

  • 实际上是因为我刚才下载了一个dotenv ohmyzsh插件而导致的,只是忘记了。很难调试。原来google密钥中有\n,ohmyzsh dotenv插件无法正确解析它们。所以删除它对我来说很有效


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

    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%确定如何使用令牌+密码进行身份验证。 我正在接近答案,如果我找到了,我会在将来更新这篇文章。发布一个有用的链接:希望有人能打败我:)