Как установить ApplicationDefaultCredentials в Google Translate API php? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь установить Google Translation API на моем сервере. Но код возвращает ошибку «Не удалось создать ApplicationDefaultCredentials»

    $translationClient = new Google\Cloud\Translate\V3\TranslationServiceClient();
    putenv('GOOGLE_APPLICATION_CREDENTIALS="/path/to/credetials.json"');
    $content = ['one', 'two', 'three'];
    $targetLanguage = 'es';
    $response = $translationClient->translateText(
        $content,
        $targetLanguage,
        TranslationServiceClient::locationName('[ProjectID]', 'global')
    );
    $res = '';
    foreach ($response->getTranslations() as $key => $translation) {
        $separator = $key === 2
            ? '!'
            : ', ';
        $res .= $translation->getTranslatedText() . $separator;
    }
    } catch(\Exception $e) {
        $res = $e->getMessage();
    }
    die(json_encode($res));

Я уже потратил много времени на его настройку, но безрезультатно. Пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

enter image description here

Php putenv https://www.php.net/manual/en/function.putenv.php

Андрей, это сработало для меня на Windows 10 Pro. Wampserver 3.2.0. Php 7.4.4. У него определенно есть проблема с Windows обратной косой чертой. Прямая дробная черта и избегание двойных кавычек и одинарных кавычек помогли компилировать компилятор.

    $file = trim("C:/users/boss/onedrive/desktop/google.json",'"');
    putenv("GOOGLE_APPLICATION_CREDENTIALS=$file");
0 голосов
/ 14 апреля 2020

Вы можете передать учетные данные в переменной config, а затем инициализировать клиента.


<?php

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Translate\V2\TranslateClient;

/** Uncomment and populate these variables in your code */

$config = ['credentials' => 'key.json'];


$text = "The text to translate.";
$targetLanguage = "ja";

$translate = new TranslateClient($config);
$result = $translate->translate($text, [
    "target" => $targetLanguage,
]);
print("Source language: $result[source]\n");
print("Translation: $result[text]\n");


?>

Source language: en
Translation: 翻訳するテキスト

...