我正在尝试使用凭据 token 对谷歌云存储进行身份验证。
在 node.js GCS api 文档中的任何地方都找不到有关如何执行此操作的示例。
他们指示生成并下载一个包含您的私钥的 json 文件,然后链接到它在您的文件系统上的路径,如下所示:
const storage = new Storage({keyFilename: "key.json"});
这工作得很好。但是我不想将我的 key 保存为 JSON 文件,而是创建凭据并将它们保存为环境变量,如下所示:
const gc = new Storage({
credentials: {
client_email: process.env.CLIENT_EMAIL,
private_key: process.env.SECRET_KEY
}
});
我尝试使用服务帐户 HMAC 访问 key 从存储桶的设置、互操作性菜单中获取此 token 。当我尝试使用上述身份验证方法从存储桶上传/删除文件时,出现以下错误:
错误:错误:0909006C:PEM 例程:get_name:无起始行
感谢您对此事的任何帮助
最佳答案
错误:错误:0909006C:PEM 例程:get_name:无起始行
实际上是因为我不久前下载了一个 dotenv ohmyzsh 插件而忘记了。很难调试。原来谷歌 key 中有\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% 确定如何使用 token + secret 进行身份验证。
我正在接近答案,如果我找到它,我会在将来更新这篇文章。发布一个有用的链接:google-auth-library-nodejs希望有人能打败我 :)
关于使用凭据 token 的 Node.js 谷歌云存储身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62538013/