如何在Ruby on Rails中使用ENV变量对Google Vision / Cloud进行身份验证

问题描述 投票:0回答:1

我的应用程序托管在Heroku上,因此我试图弄清楚如何使用Google Cloud提供的JSON(进行身份验证)作为环境变量,但到目前为止我还无法获得身份验证。

我搜索过Google和Stack Overflow,发现的最佳线索是:

Google Vision API authentication on heroku

How to upload a json file with secret keys to Heroku

都说他们能够使它正常工作,但是他们没有提供我已经能够工作的代码。有人可以帮帮我吗?我知道这可能是愚蠢的。

我目前正试图利用Google的示例代码在我的产品模型中测试该服务。我的看起来像这样:

def self.google_vision_labels
  # Imports the Google Cloud client library
  require "google/cloud/vision"

  # Your Google Cloud Platform project ID
  project_id = "foo"

  # Instantiates a client
  vision = Google::Cloud::Vision.new project: project_id

  # The name of the image file to annotate
  file_name = "http://images5.fanpop.com/image/photos/27800000/FOOTBALL-god-sport-27863176-2272-1704.jpg"

  # Performs label detection on the image file
  labels = vision.image(file_name).labels

  puts "Labels:"
  labels.each do |label|
    puts label.description
  end
 end

我一直收到此错误,

RuntimeError: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information

根据我所读的内容,我尝试将JSON内容放入secrets.yml(我正在使用Figaro gem),然后根据此SO问题的答案在Google.yml文件中对其进行引用。] >

application.yml中,我放置了(为了安全起见,我重写了这篇文章中的某些内容:]]

GOOGLE_APPLICATION_CREDENTIALS: {
  "type": "service_account",
  "project_id": "my_project",
  "private_key_id": "2662293c6fca2f0ba784dca1b900acf51c59ee73",
  "private_key": "-----BEGIN PRIVATE KEY-----\n #keycontents \n-----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "100",
  "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": 
  "https://www.googleapis.com/robot/v1/metadata/x509/get-product-labels%40foo.iam.gserviceaccount.com"
}

并且在config/google.yml中,我输入:

GOOGLE_APPLICATION_CREDENTIALS = ENV["GOOGLE_APPLICATION_CREDENTIALS"]

也尝试过:

GOOGLE_APPLICATION_CREDENTIALS: ENV["GOOGLE_APPLICATION_CREDENTIALS"]

我还尝试根据此Google页面在两个文件中更改这些变量名,而不是用GOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_KEYFILE_JSON更改VISION_KEYFILE_JSON

有人可以,请帮助我了解我在使用JSON凭证引用/创建环境变量时做错了什么?谢谢!

我的应用程序托管在Heroku上,因此我试图弄清楚如何使用Google Cloud提供的JSON(进行身份验证)作为环境变量,但是到目前为止,我还无法获得身份验证。我搜索过...

ruby-on-rails ruby google-cloud-platform google-vision
1个回答
0
投票

[让Google决定通过文件而不是一系列环境变量存储秘密来破坏事实上的凭据标准,这真是令人讨厌。

也就是说,我对此问题的解决方案是创建一个.env变量GOOGLE_API_CREDS

© www.soinside.com 2019 - 2024. All rights reserved.