Я использую Google Vision API в одном из моих скриптов PHP.
Скрипт работает хорошо, когда я выполняю его через терминал:
php /var/www/html/my_script.php
Но когда я хочу выполнить его из своего браузера, я получаю ошибку 500:
Фатальная ошибка PHP: Uncaught
Google \ Cloud \ Core \ Exception \ ServiceException: {\ n «ошибка»: {\ n
«код»: 401, \ n «сообщение»: «запрос имеет неверную аутентификацию
полномочия. Ожидаемый токен доступа OAuth 2, файл cookie для входа или другое
действительные учетные данные для аутентификации. Увидеть
https://developers.google.com/identity/sign-in/web/devconsole-project.»\ П
«status»: «UNAUTHENTICATED» \ n} \ n} \ n
Я не понимаю, почему в сообщении об ошибке предлагается использовать OAuth 2, мне не нужно, чтобы мой пользователь входил в свою учетную запись Google.
Мой код следующий:
namespace Google\Cloud\Vision\VisionClient;
require('vendor/autoload.php');
use Google\Cloud\Vision\VisionClient;
$projectId = 'my_project_id';
$path = 'https://tedconfblog.files.wordpress.com/2012/08/back-to-school.jpg';
$vision = new VisionClient([
'projectId' => $projectId,
]);
$image = $vision->image(file_get_contents($path), ['WEB_DETECTION']);
$annotation = $vision->annotate($image);
$web = $annotation->web();
Вообще говоря, вам нужно будет предоставить ключевой файл учетной записи службы при создании клиента Google Cloud. Исключением является то, что вы работаете на Compute Engine или если у вас есть настройки учетных данных приложения по умолчанию. Так как вы видите ошибки аутентификации, ни одна из них не является причиной.
Чтобы получить учетную запись службы и ключевой файл, проверьте документация.
Создав учетную запись службы и загрузив файл ключей json, вы можете предоставить ее конструктору клиентской библиотеки:
<?php
use Google\Cloud\Vision\VisionClient;
$vision = new VisionClient([
'projectId' => $projectId,
'keyFilePath' => '/path/to/keyfile.json'
]);
После того, как вы предоставите действительный ключевой файл, вы сможете выполнять аутентифицированные запросы к API Vision.
Чтобы избежать этого шага, вы можете настроить Учетные данные приложения по умолчанию на вашем сервере или компьютере.
Других решений пока нет …