У меня есть простой PHP-компонент, который извлекает видео из общедоступного плейлиста на YouTube. Я использую официальный PHP Google SDK и аутентифицировался с помощью ключа сервера (поскольку мне нужен только доступ к общедоступным данным, а не к данным в контексте пользователя).
На всем протяжении разработки и до стадии, этот компонент работал нормально. Однако я переместил приложение на рабочий сервер клиента (учетную запись хостинга GoDaddy), и компонент неожиданно перестал работать, вместо этого выдав следующую ошибку:
Google_Service_Exception в строке REST.php 83:
Ошибка вызова GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults = 50&playlistId = PLAYLIST_ID&userIp = server_ip&ключ = Developer_Key: (403) Для вашего API-ключа настроено ограничение для каждого IP-адреса или для каждого реферера, и запрос не соответствует этим ограничениям. Используйте Консоль разработчика Google для обновления конфигурации ключа API, если запрос с этого IP-адреса или реферера должен быть разрешен.
Я не понимаю IP-адрес сервера занесен в белый список в консоли API Google. Я знаю, что это правильный IP-адрес, так как я отправил HTTP-запрос POST с сервера на другой скрипт PHP и записал REMOTE_ADDR
переменная сервера.
Я также попытался указать IP-адрес в самом запросе. Полный код:
$client = new Google_Client;
$client->setApplicationName($appName);
$client->setDeveloperKey($developerKey);
$service = new Google_Service_YouTube($client);
$service->playlistItems->listPlaylistItems('snippet', array(
'maxResults' => 50,
'playlistId' => $collectionId,
'userIp' => $serverIp,
));
Так что происходит? Почему Google решает, что он не играет в мяч с производственным сервером?
Задача ещё не решена.
Других решений пока нет …