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 访问密钥从存储桶的设置、互操作性菜单中获取此令牌。
当我尝试使用上述身份验证方法从存储桶上传/删除文件时,出现以下错误:
错误:错误:0909006C:PEM 例程:get_name:无起始行
感谢对此事的任何帮助
错误
错误:错误: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希望有人能打败我:)
| 归档时间: |
|
| 查看次数: |
7397 次 |
| 最近记录: |