Какой IP-адрес я использую для вызова внешнего API?

#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-адрес сервера себе по электронной почте, когда увидите сообщение об ошибке.

Подробная информация:

http://www.php.net/manual/en/reserved.variables.server.php

Комментарии:

1. Нет, к сожалению, это не тот IP-адрес, который я использую для выполнения вызова. $_SERVER['SERVER_ADDR'] Содержит IP-адрес сервера, используемый для HTTP-соединения, которое пользователь устанавливает при вызове PHP-скрипта, а не IP-адрес, используемый для подключения к Google Geocode API.