Невозможно использовать Google перевод API в PHP - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь использовать Google Translate API в моем проекте Laravel. Я следовал этому уроку https://cloud.google.com/translate/docs/quickstart-client-libraries?authuser=2#client-libraries-install-php

Но когда я пытаюсь запустить код для перевода, я получаю эту ошибку -

Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a "quota exceeded" or "API not enabled" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/. To disable this warning, set SUPPRESS_GCLOUD_CREDS_WARNING environment variable to "true".

Это мой код:

 public static function gcloud(){
        # Your Google Cloud Platform project ID
        $projectId = 'mybot';
        # Instantiates a client
        $translate = new TranslateClient([
            'projectId' => $projectId
        ]);

        # The text to translate
        $text = 'Hello, world!';
        # The target language
        $target = 'ru';

        # Translates some text into Russian
        $translation = $translate->translate($text, [
                    'target' => $target
                ]);

        echo 'Text: ' . $text . '
        Translation: ' . $translation['text'];
    }

Я не знаю, в чем проблема.

1 Ответ

1 голос
/ 17 июня 2019

Скорее всего, учетные данные, которые вы задали для клиентской библиотеки для использования ваших gcloud учетных данных на ~/.config/gcloud/application_default_credentials.json. Это Учетные данные конечного пользователя , которые привязаны к ВАМ, конкретному пользователю. Клиентская библиотека требует учетные данные учетной записи службы , которые не привязаны к конкретному пользователю.

Создайте учетные данные учетной записи службы, перейдя в API и службы > Учетные данные и выбрав Создать учетные данные > Ключ учетной записи службы . Создайте новую учетную запись службы и в своем случае назначьте ей роль Cloud Translation API Admin . Это загрузит файл JSON со следующими полями:

{
  "type": "service_account",
  "project_id": "YOUR_PROJECT_ID",
  "private_key_id": "...",
  "private_key": "...",
  "client_email": "...",
  "client_id": "...",
  "auth_uri": "...",
  "token_uri": "...",
  "auth_provider_x509_cert_url": "...",
  "client_x509_cert_url": "..."
}

Теперь установите переменную среды GOOGLE_APPLICATION_CREDENTIALS для пути к этому файлу. Обратите внимание, что поле «тип» - «service_account» В учетных данных, которые выдают ошибку, поле «тип» - «author_user».

...