Мое приложение размещено на Heroku, поэтому я пытаюсь выяснить, как использовать JSON Google Cloud (для проверки подлинности) в качестве переменной среды, но до сих пор не могу пройти проверку подлинности.
Я искал в Google и Stack Overflow, и я нашел лучшие лиды:
Аутентификация Google Vision API на героку
Как загрузить файл json с секретными ключами в 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), а затем сослаться на него в файле Google.yml, основываясь на ответе на этот вопрос SO.
В 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": "foo-labels@foo.iam.gserviceaccount.com",
"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_APPLICATION_CREDENTIALS
с GOOGLE_CLOUD_KEYFILE_JSON
и VISION_KEYFILE_JSON
на основе этой страницы Google.
Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю неправильно, ссылаясь на / создавая переменную среды с учетными данными JSON? Спасибо!