Я пытаюсь выполнить анализ настроений с помощью языкового клиента Google Cloud PHP из этого руководства: https://cloud.google.com/natural-language/docs/reference/libraries.
В документации говорится, что это должно работать с простым ключом api: https://cloud.google.com/docs/authentication/api-keys
Я уже пробовал несколько способов установить ключ API (простой ключ API, без oauth), но всегда получаю сообщение об ошибке: «В запросе отсутствует действующий ключ API».
Вот некоторые из моих попыток:
// Instantiates a client
$language = new LanguageClient([
'projectId' => $projectId,
'key' => $key,
'developerKey' => $key,
'api_key' => $key
]);
$language->setDeveloperKey($key);
// Detects the sentiment of the text
$annotation = $language->analyzeSentiment($texttoanalyze);
$sentiment = $annotation->sentiment();
echo 'Text: ' . $text . 'Sentiment: ' . $sentiment['score'] . ', ' . $sentiment['magnitude'];
Теперь я попробовал стандартный метод с учетной записью службы, как описано здесь: googleapis.github.io/google-cloud-php/#/docs/cloud-language/… установка переменной среды export GOOGLE_APPLICATION_CREDENTIALS = [путь к моему ключевому файлу] не помогла. Я все еще получаю ту же ошибку, я думаю, при использовании клиента Google (для композитора требуется google / cloud-language) явно указывать заголовок не обязательно.
Если вы запустите это краткое руководство - cloud.google.com/natural-language/docs/reference/…, будет ли у вас такая же ошибка? Я просто попробовал установить переменную окружения, и это сработало. Обычно в клиентской библиотеке вы аутентифицируетесь с помощью переменной среды или учетных данных из файла JSON. Ключ API обычно требуется, когда вы отправляете запрос POST в API напрямую.






хорошо, я понял, как выполнить простой вызов api без использования клиентской библиотеки, например: POST https://language.googleapis.com/v1/documents:analyzeEntities?key=API_KEY
как описано здесь: https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeEntities
Я мог бы решить проблему с аутентификацией для клиентской библиотеки, добавив параметр keyFilePath в конфигурацию LanguageClient следующим образом:
$language = new LanguageClient([
'projectId' => 'my-project-id',
'keyFilePath' => '/path/to/my/keyfile.json'
]);
не уверен, что это помогает, поскольку я не парень PHP, но токен доступа должен быть описан в заголовке - изучите варианты получения токена доступа с помощью OAUTH2