Уже три дня я получаю вышеупомянутое сообщение об ошибке при попытке доступа к API книг Google, хотя мой IP не изменился. Я могу воспроизвести это в командной строке с помощью простого
curl "https://www.googleapis.com/books/v1/volumes?q=frankenstein"
Так что это не мой код. Это можно исправить, добавив код страны:
curl "https://www.googleapis.com/books/v1/volumes?q=frankenstein&country=DE"
Теперь, как мне это сделать в PHP-клиенте?
Я попытался добавить страну в качестве необязательного параметра:
$client = new Google_Client();
$client->setApplicationName("My_Project");
$client->setDeveloperKey( $google_books_api_key );
$service = new Google_Service_Books($client);
$optParams = array(
'country' => 'DE'
);
$results = $service->volumes->listVolumes($terms, $optParams);
но это просто дает мне
{"error": {"errors": [{"domain": "global","reason": "backendFailed","message": "Service temporarily unavailable.","locationType": other","location": "backend_flow"}],"code": 503,"message": "Service emporarily anavailable."}}
Решение, которое я нашел где-то, чтобы установить IP-адрес пользователя на тот, к которому у меня есть доступ, по-прежнему выдавало мне сообщение об ошибке «географически ограничено».
$optParams = array(
'userIp' => '91.64.137.131'
);
Я нашел решения для клиентов, отличных от PHP, таких как Java? или Ruby или C#, но мне они не показались полезными.
В PHP-клиенте существует метод setCountry($country) в классе Google_Service_Books_VolumeAccessInfo extends Google_Model, но я не знаю, как получить доступ к этому методу. Кто-нибудь знает, как это решить?