Как я могу поймать недопустимый ключ API для карт Google - PullRequest
17 голосов
/ 13 декабря 2010

У меня есть этот код:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=babab" type='text/javascript'></script> 

Если ключ недействителен, то появляется предупреждение, но я хочу выполнить какое-то действие в этом случае.Я не уверен, как подключиться к нему, хотя.Есть идеи?

Ответы [ 3 ]

4 голосов
/ 13 декабря 2010

Google не предлагает внешний метод проверки ключа API Карт Google.Следовательно, вы не можете запросить какой-либо сервис, например, «Является ли этот код действительным abcde1234» и получить ответ TRUE / FALSE.

Обсуждается , как генерируется ключ API Карт..Но я предлагаю вам взглянуть на сообщение от Майка Уильямса о функции GValidateKey .Эта функция на самом деле выполняет магическую проверку - что именно она делает, например, создает хэш из вашей учетной записи / домена Google - мы не знаем.

Я вижу два решения вашей проблемы проверки, является ли APIпредоставленный ключ правильный:

  1. Перезаписать входящее оповещение каким-либо пользовательским кодом (проверьте содержимое оповещения или проверьте, появляется ли оповещение в течение X секунд после загрузки страницы)
  2. Каким-то образом получите функцию GValidateKey для предварительной проверки вашего ключа.Может быть, вы можете позвонить до ссылки на API Javascript?Для меня это звучит немного хакерски ...

Проблема, с которой вы, вероятно, столкнетесь, заключается в том, что вы не знаете, что Google на самом деле проверяет.Реферер, ссылающийся сайт, хост - множество возможностей (это не IP-адрес сервера, а имя плюс некоторая дополнительная информация).

3 голосов
/ 01 февраля 2017

Я только что столкнулся с необходимостью выполнить действие, если использовался недопустимый ключ API.В документации Google говорится :

Если вы хотите программно обнаружить ошибку аутентификации (например, для автоматической отправки маяка), вы можете подготовить функцию обратного вызова.Если определена следующая глобальная функция, она будет вызываться при сбое аутентификации.

Это все, что мне нужно было сделать:

function gm_authFailure() { // Perform action(s) }
2 голосов
/ 30 августа 2013

Для современных браузеров (IE9 + и других) вы можете использовать DOMNodeRemoved event .Вам просто нужно добавить обработчик событий к элементу, который вы передаете в конструктор карты:

var map = new google.maps.Map(element, myOptions);

 element.addEventListener("DOMNodeRemoved", function(e){
   if (e.target === element){
     //your code here
     element.removeEventListener("DOMNodeRemoved", mapWasRemovedHandler, true);
   }
 }, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...