Как настроить файл ключа службы Google json с помощью конфигурации .env - PullRequest
0 голосов
/ 12 февраля 2020

Я создаю веб-сервис в nodejs, используя ключ API службы Google, и на этапе разработки я поместил файл локально и протестировал его следующим образом ... все было в порядке.

Теперь мне нужно развернуть в firebase, и я должен сделать невидимым файл конфигурации. У вас есть опыт, как сделать это, используя файл .env?

Файл конфигурации выглядит так:

{
  "type": "service_account",
  "project_id": "xxxx-eeee",
  "private_key_id": "xxxw342234",
  "private_key": "-----BEGIN PRIVATE KEY-----client_id": "xxxxxxxxxxxx",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/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/xxxxxxxxxxxxxxxx.iam.gserviceaccount.com"
}

Теперь я обращаюсь к файлу, используя этот код:

const translate = new Translate(
    {
        projectId: 'my-project-0o0o0o0o'
        keyFilename: './my-project.json
    }
);

Кто может помочь мне с шагами, которые мне нужны для доступа к этому файлу без публикации учетных данных в github, а затем в firebase

ОБНОВЛЕНО 13.02.2020

я создал файл .env для хранения там мои учетные данные, как это:

 SEPA_TRANSLATE_PROJECT_ID="4354-4545"
    SEPA_TRANSLATE_GOOGLE_API_KEY_TYPE="service_account"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_PRIVATE_KEY_ID="43434"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMM=\n-----END PRIVATE KEY-----\n"

    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_CLIENT_EMAIL="googletranslateaaaaapi@aaaaa-aaaa.iam.gserviceaccount.com"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_CLIENT_ID="34234"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_AUTH_URI="https://accounts.google.com/o/oauth2/auth"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_TOKEN_URI="https://oauth2.googleapis.com/token"
    SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_AUTH_PROVIDER_X509_CERT_URL="https://www.googleapis.com/oauth2/v1/certs"
    SEPA_TRANSLATE_GOOGLE_SERVICE_CLIENT_X509_CERT_URL="https://www.googleapis.com/robot/v1/metadata/x509/googletranslatewerwer%erwerwre-werwr.iam.gserviceaccount.com"

теперь файл my-project. json файл выглядит так:

{
      "type": process.env.SEPA_TRANSLATE_GOOGLE_API_KEY_TYPE,
      "project_id": process.env.SEPA_TRANSLATE_PROJECT_ID,
      "private_key_id": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_PRIVATE_KEY_ID,
      "private_key": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_PRIVATE_KEY
      "client_email": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_CLIENT_EMAIL,
      "client_id": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_CLIENT_ID,
      "auth_uri": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_AUTH_URI,
      "token_uri": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_TOKEN_URI,
      "auth_provider_x509_cert_url":process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_KEY_AUTH_PROVIDER_X509_CERT_URL,
      "client_x509_cert_url": process.env.SEPA_TRANSLATE_GOOGLE_SERVICE_CLIENT_X509_CERT_URL
    }

это json называется:

 const translate = new Translate(
        {
            projectId: 'my-project-0o0o0o0o'
            keyFilename: './my-project.json
        }
    );

когда я тестировал свой API, я получил это сообщение об ошибке: ошибка перевода текста: SyntaxError: неожиданный токен p в JSON в позиции 13

1 Ответ

1 голос
/ 12 февраля 2020

Вы не должны использовать файл .env в облачных функциях Firebase и не можете использовать данные среды, такие как process.env.xxxx в json файле.

Вы должны использовать конфигурацию среды для облачных функций Firebase.

  • Для хранения данных среды вы можете использовать команду firebase functions:config:set.
  • Чтобы получить данные среды, вы можете использовать функцию functions.config().
  • Файл локальной настройки равен .runtimeconfig.json и запустить firebase functions:config:get > .runtimeconfig.json после сохранения данных среды. (Команда firebase functions:config:set)

См .:

Если вы хотите использовать только API перевода, тогда keyFilename не требуется и не создавайте файл .env самостоятельно.

Вы должны настроить аутентификацию API перевода с учетной записью службы firebase.

И чтобы запустить локальную, вы должны установить переменную среды GOOGLE_APPLICATION_CREDENTIALS для пути к служебной учетной записи JSON файл, содержащий ключ учетной записи службы.

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

См. :

И не могли бы вы попробовать перевести образцы ?

...