Firestore из Ruby - не удалось загрузить учетные данные по умолчанию - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь начать работу с Google Firestore (FireBase) в Ruby и не совсем уверен, что делать с загрузкой учетных данных для связи с сервером.

Я запускаю этот код из теста

it 'do something with firestore', focus: true do
  firestore = Google::Cloud::Firestore.new(project_id: 'jg-jai-dev')
end

и получите следующую ошибку

RuntimeError:
    Could not load the default credentials. Browse to
https://developers.google.com/accounts/docs/application-default-credentials
for more information
  # /home/david/.rvm/gems/ruby-2.4.1@scraper/gems/googleauth-0.6.2/lib/googleauth/application_default.rb:61:in `get_application_default'
  # /home/david/.rvm/gems/ruby-2.4.1@scraper/gems/googleauth-0.6.2/lib/googleauth/credentials.rb:132:in `from_application_default'
  # /home/david/.rvm/gems/ruby-2.4.1@scraper/gems/googleauth-0.6.2/lib/googleauth/credentials.rb:90:in `default'
  # /home/david/.rvm/gems/ruby-2.4.1@scraper/gems/google-cloud-firestore-0.21.0/lib/google/cloud/firestore.rb:559:in `default_credentials'
  # /home/david/.rvm/gems/ruby-2.4.1@scraper/gems/google-cloud-firestore-0.21.0/lib/google/cloud/firestore.rb:507:in `new'
  # ./spec/services/export/firestore_job_export_spec.rb:220:in `block (3 levels) in <top (required)>'

Когда я проверял документацию, мне показалось, что мне нужен какой-то файл учетных данных в файле JSON, но я не уверен, где я могу найти этот файл, я не вижу его в https://console.firebase.google.com

it 'where do I get the keyfile so that I can use Server authentication', focus: true do
  firestore = Google::Cloud::Firestore.new(project_id: 'jg-jai-dev', credentials: "keyfile.json")
end

Где вы на самом деле получаете KeyFile.json ?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Мне пришлось установить gcloud и создать файл учетных данных. Шаги, которые я предпринял, можно найти в quickstart-linux и аутентификация / начало работы , но я также перечислил их здесь.

  1. Загрузите и установите gcloud

  2. Запустите gcloud

    • gcloud init
  3. Выберите облачный проект по умолчанию (не уверен, нужен ли он)

    • На этом этапе у меня были инструменты, необходимые для настройки учетной записи службы и создания keyfile.json.
    • Мне нужно было выйти из терминала и снова запустить его, прежде чем перейти к шагу 4.
  4. Настройка служебной учетной записи с помощью командной строки

    • gcloud iam service-account создает [ИМЯ]

gcloud iam service-account создать my-service-account

  1. Назначение определенных разрешений для проекта

    • привязка add-iam-политики к проектам gcloud [PROJECT_ID] - член "serviceAccount: [ИМЯ] @ [PROJECT_ID] .iam.gserviceaccount.com" --role "роли / владелец"

gcloud projects привязка add-iam-policy jg-jai-dev --member "ServiceAccount: my-service-account@cool-project.iam.gserviceaccount.com" --рол "роли / владелец"

  1. Создать ключ

Ключи служебных учетных записей gcloud iam создают google-cloud-key.json --iam-account my-service-account@cool-project.iam.gserviceaccount.com

  1. Изменить код рубина

Пример кода внутри спецификации теста

it 'do something with firestore', focus: true do
  firestore = Google::Cloud::Firestore.new(project_id: 'jg-jai-dev', credentials: "./google-cloud-key.json")
end
0 голосов
/ 10 мая 2018

Согласно исходному коду у вас есть несколько вариантов создания учетных данных.

В вашем случае ваш код должен работать. Попробуйте поместить свой json в keyfile.json в ту же папку, что и спецификация с credentials: 'keyfile.json'.

Другой вариант - создать объект учетных данных самостоятельно:

creds = Google::Auth::Credentials.new private_key: 2048
Google::Cloud::Firestore.new(project_id: 'jg-jai-dev', credentials: creds)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...