#php #google-maps #google-maps-api-3
#php #google-карты #google-карты-api-3 #google-maps-api-3
Вопрос:
У меня есть PHP-скрипт, который я использую для геокодирования адресов с помощью Google Geocode API. Это хорошо работает на моем тестовом сервере. Я использую URL-адрес
https://maps.googleapis.com/maps/api/geocode/json?key=SECRETamp;address=ADDRESSamp;sensor=false
Но при развертывании на рабочем сервере я получаю следующее сообщение об ошибке:
{ "error_message" : "This IP, site or mobile application is not authorized to use this API key.", "results" : [], "status" : "REQUEST_DENIED" }
Сервер имеет несколько IP-адресов, и я не знаю диапазон IP-адресов или все IP-адреса, и поэтому я не могу добавить их в консоль API Google.
Это не общедоступный IP-адрес сервера.
Итак, как мне узнать, какой IP-адрес мой производственный сервер использует для вызова API?
Ответ №1:
IP-адрес сервера, который используется для внешнего запроса, можно найти, отправив HTTP-запрос на http://ip.appspot.com /
PHP-код:
<?php
echo file_get_contents('http://ip.appspot.com/');
?>
Комментарии:
1. Спасибо, я также пробовал это, прежде чем задавать вопрос, но это также не дает правильного IP-адреса. Я предполагаю, что сервер настроен так, что он перенаправляется на Google иначе, чем, например. ip.appspot.com
Ответ №2:
Я нашел обходной путь для решения проблемы, однако на самом деле он не отвечает на мой первоначальный вопрос, который я оставлю открытым.
Можно добавить параметр userIp
-в соответствии с некоторой хорошо скрытой документацией Google API.
Итак, я успешно использовал вызов
https://maps.googleapis.com/maps/api/geocode/json?key=SECRETamp;address=ADDRESSamp;sensor=falseamp;userIp=11.22.33.44
где IP-адрес был одним из разрешенных IP-адресов.
Ответ №3:
IP-адрес сервера можно получить из $_SERVER['SERVER_ADDR']
Вы можете попробовать отправить IP-адрес сервера себе по электронной почте, когда увидите сообщение об ошибке.
Подробная информация:
Комментарии:
1. Нет, к сожалению, это не тот IP-адрес, который я использую для выполнения вызова.
$_SERVER['SERVER_ADDR']
Содержит IP-адрес сервера, используемый для HTTP-соединения, которое пользователь устанавливает при вызове PHP-скрипта, а не IP-адрес, используемый для подключения к Google Geocode API.