Я работаю над сайтом, использующим Google Geocoding, чтобы получить длину/длину для местоположения по строке поиска. На прошлой неделе приложение отлично работало, но на этой неделе оно только что прекратилось. Я ничего не менял ни на сайте, ни в Google API Console; он просто переставал работать над собой.Google Maps API v3 Key Stopped Working
Сайт был построен кем-то еще давным-давно и прошел через многие команды, поэтому это немного беспорядок. На самом деле он использует как геокодер JS, так и драгоценный камень геодезиста Ruby. Я создал новую учетную запись разработчика Google для тестирования и создал два открытых ключа доступа к API: 1 для приложений браузера и 1 для серверных приложений. Я установил IP-адреса своего локального Интернета (для localhost) и моего промежуточного сервера для ключа сервера, и я установил ссылки для ключа браузера на http://localhost:3000/*
и https://staging.myserver.com/*
. Это было в прошлую пятницу, и все сработало отлично.
Вчера я работал над сайтом, и я заметил, что геокодер больше не работает. Я получаю это сообщение об ошибке при попытке найти местоположение:
Google отключил использование API Карт для этого приложения. На этом сайте не разрешено использовать идентификатор клиента Google Maps. Если вы являетесь владельцем этого приложения, вы можете узнать больше о регистрации URL-адресов здесь: https://developers.google.com/maps/documentation/business/clientside/auth#registering_authorized_urls
Это очень запутанным для меня, потому что я не передавая любой идентификатор клиента. Вот соответствующая функция JS:
Locations.getNearbyLocationsFromAddress = function(address) {
var deferred = $.Deferred();
Locations.google_ready_deferred = $.Deferred();
if (typeof(google) === "undefined") {
$.getScript("https://maps.googleapis.com/maps/api/js?key=<%= KEYS['GOOGLE_MAPS_API_KEY'] %>&sensor=true&channel=Royalty&callback=RedRoyalty.Locations.googleReady");
} else {
Locations.google_ready_deferred.resolve();
}
Locations.google_ready_deferred.done(function() {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address, 'region': 'us'}, function(results, status) {
if (results.length == 0) {
$(".js-locations-form input").addClass("error");
$(".errors").html("Sorry, you've gotta enter a valid location. Mind trying again?");
return;
} else {
$(".js-locations-form input").removeClass("error");
$(".errors").empty();
}
var targetResult = -1;
for (var i=0; i<results.length; i++) {
for (var j=0; j<results[i].address_components.length; j++) {
if ($.inArray('country', results[i].address_components[j].types) >= 0) {
if (results[i].address_components[j].short_name == "US" || results[i].address_components[j].short_name == "CA") {
targetResult = i;
break;
}
}
}
if (targetResult !== -1) break;
}
if (targetResult === -1) targetResult = 0;
Locations.getNearbyLocationsFromCoordinates({
latitude: results[targetResult].geometry.location.lat(),
longitude: results[targetResult].geometry.location.lng()
}, deferred);
});
});
return deferred;
};
Первая вещь, которую я попытался решить эту проблему, было удалить все IP-адреса и ссылающихся из моих ключей общего доступа. Это не сработало, поэтому я создал совершенно новую учетную запись Google Developer с новыми ключами (без IP-адресов или рефереров). Я обновил ключи на своем сайте, перезапустил ... и все равно ничего. Я продолжил поиск и устранение неисправностей, но около 20 минут спустя он начал работать самостоятельно! Еще раз, без меня ничего не меняя.
Это утро, однако, я получаю ту же ошибку, что я получал вчера. Если посмотреть на консоль Google API для второй созданной мной учетной записи, я вижу, что она превысила ее квоту в 0 запросов в день ... но тогда почему она вообще работала вчера? Кроме того, почему ключи от первого аккаунта не работают? Я фактически включил выставление счетов на этом счете, так что он не превысил любые квоты.
Ключ сервера (используемый камнем Ruby) продолжает работать во всем этом.
Что я делаю неправильно?
Edit: Может быть стоит отметить, что это также работает, когда я не использую ключи API на всех, хотя я не думаю, что это окончательное решение, потому что участок производства получит слишком много трафика на оставаться в пределах неоплаченных квот (не так ли?).
Я бы дал Google крик ... если вы платите за их обслуживание, и он перестает работать, они должны быть в состоянии помочь – tymeJV
Наш клиент очень защищает свою учетную запись Google и не даст нам доступ.Мы обращаемся к ним, чтобы выяснить, как мы можем связаться с Google Support через их аккаунт. – TGPrankster