我正在尝试将 Google Cloud Vision API 与 Node 结合使用,并在 Heroku 上运行该应用程序。非常接近这个例子的东西:
https://github.com/googleapis/nodejs-vision
但是,Google API 想要通过读取包含服务帐户的文件来进行身份验证,并且使用环境变量读取文件的位置。有没有办法使用 Heroku 安全地存储此文件,或者以某种方式利用 Heroku Config Vars?
最佳答案
NodeJS Google Auth Library 的文档实际上在 how to load credentials from environment variables 上提供了一个完整的例子.具体来说,它说在使用类 Heroku 系统时推荐使用这种方法,所以我认为你绝对应该看看它。
使用以下格式下载服务帐户的凭据后,您可以按照以下步骤使用它们:
- 使用
process.env['NAME_OF_YOUR_ENV_VAR']; 加载环境变量
- 使用
JSON.parse(keysVar); 将变量解析为 JSON
- 使用
GoogleAuth.fromJSON()
方法通过 key 授权请求。
凭证格式:
$ export CREDS='{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "your-private-key",
"client_email": "your-client-email",
"client_id": "your-client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "your-cert-url"
}'
您可以在我在第二个链接中共享的 Google Auth 文档中找到有关如何使用它们的更详细示例(或者也直接在 this example file 中),因此请随意根据您的用例进行调整。
关于node.js - 通过 Heroku 安全地使用 Google 服务帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664844/