我的应用程序托管在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_CREDENTIALS
和GOOGLE_CLOUD_KEYFILE_JSON
更改VISION_KEYFILE_JSON
。有人可以,请帮助我了解我在使用JSON凭证引用/创建环境变量时做错了什么?谢谢!
我的应用程序托管在Heroku上,因此我试图弄清楚如何使用Google Cloud提供的JSON(进行身份验证)作为环境变量,但是到目前为止,我还无法获得身份验证。我搜索过...
[让Google决定通过文件而不是一系列环境变量存储秘密来破坏事实上的凭据标准,这真是令人讨厌。
也就是说,我对此问题的解决方案是创建一个.env变量GOOGLE_API_CREDS
。