k4j*_*4ju 3 authentication ruby-on-rails heroku vision-api
在开发中我只使用:
@vision = Google::Cloud::Vision.new( project: "instacult",
keyfile: "path/to/keyfile.json" )
Run Code Online (Sandbox Code Playgroud)
其中keyfile是谷歌在创建服务帐户后生成的json(https://cloud.google.com/vision/docs/common/auth).
但显然我不能只将密钥文件上传到github.
我尝试将整个json保存到Heroku的配置变量并运行:
Rails.env.production? ? ENV["GOOGLE_CREDENTIALS"] : path
Run Code Online (Sandbox Code Playgroud)
但是我在heroku的日志中得到"不是一个有效的文件".由于我没有传递文件而是传递对象,因此似乎是合乎逻辑的.但是如何克服它呢?
干杯,凯
解决了:
事实证明,您可以在环境变量中提供json对象,但是有一个命名约定.
以下是凭据的环境变量(按检查顺序):
- VISION_KEYFILE - JSON文件的路径
- GOOGLE_CLOUD_KEYFILE - JSON文件的路径
- VISION_KEYFILE_JSON - JSON内容
- GOOGLE_CLOUD_KEYFILE_JSON - JSON内容
来源:https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-vision/v0.23.0/guides/authentication
所以我最后打电话给:
@vision = Google::Cloud::Vision.new( project: "instacult")
Run Code Online (Sandbox Code Playgroud)
在我的〜/ .bashrc中设置了VISION_KEYFILE_JSON:
export VISION_KEYFILE_JSON='the_json_content'
Run Code Online (Sandbox Code Playgroud)
并在heroku上(https://devcenter.heroku.com/articles/config-vars#limits).
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |