heroku上的Google Vision API身份验证

k4j*_*4ju 3 authentication ruby-on-rails heroku vision-api

什么是在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的日志中得到"不是一个有效的文件".由于我没有传递文件而是传递对象,因此似乎是合乎逻辑的.但是如何克服它呢?

干杯,凯

k4j*_*4ju 5

解决了:

事实证明,您可以在环境变量中提供json对象,但是有一个命名约定.

以下是凭据的环境变量(按检查顺序):

  1. VISION_KEYFILE - JSON文件的路径
  2. GOOGLE_CLOUD_KEYFILE - JSON文件的路径
  3. VISION_KEYFILE_JSON - JSON内容
  4. 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).