Node.js中Google API认证如何使用JSON对象替代JSON密钥文件
解答
完全支持直接传入服务账号JSON凭证对象完成认证,无需依赖本地密钥文件,你参考示例里的参数名使用错误,无法正常运行。
原有路径认证写法
你当前使用的本地文件路径认证代码如下:
const auth = new google.auth.GoogleAuth({ keyFile: "<path/to/credentials>", scopes: [<scopes>], });
keyFile参数仅接受字符串类型的本地文件路径,传入JSON对象会触发文件读取类报错。
直接传入凭证对象的正确写法
使用credentials配置项接收凭证JSON对象即可,该配置项的入参格式和本地keyFile文件的JSON内容完全一致,代码示例:
const credentials = { "type": "service_account", "project_id": "你的项目ID", "private_key_id": "你的私钥ID", "private_key": "-----BEGIN PRIVATE KEY-----\n你的私钥完整内容\n-----END PRIVATE KEY-----\n", "client_email": "你的服务账号邮箱地址", "client_id": "你的客户端ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "你的服务账号x509证书地址" } const auth = new google.auth.GoogleAuth({ credentials: credentials, scopes: [<scopes>], });
注意点
- 传入的
private_key字段必须保留完整格式,包括首尾的私钥标记和正确的换行符,否则会出现签名失败、无法获取token的问题 - 该写法和读取本地keyFile的认证逻辑、权限范围完全一致,适合密钥通过环境变量、配置中心注入,不需要落盘存储的部署场景
内容的提问来源于stack exchange,提问作者M_to_the_J
相关产品推荐
相关产品推荐

