[英]Google Maps API v3 Key Stopped Working
我正在使用Google Geocoding的網站上通過搜索字符串獲取位置的經緯度。 上周該應用程序運行良好,但本周它剛剛停止運行。 我沒有在網站或Google API控制台上進行任何更改; 它只是停止了自己的工作。
該網站是由很久以前的其他人創建的,並且已經經歷了許多團隊,因此有點混亂。 實際上,它同時使用JS地理編碼器和Ruby地理編碼器gem。 我創建了一個新的Google開發者帳戶進行測試,並創建了兩個Public API Access Key:1個用於瀏覽器應用程序,1個用於服務器應用程序。 我將本地Internet(用於localhost)的IP地址和登台服務器的IP地址設置為服務器密鑰,並將瀏覽器密鑰的引薦來源地址設置為http://localhost:3000/*
和https://staging.myserver.com/*
。 這是上周五,一切正常。
昨天我在該網站上工作,我發現地址解析器不再起作用。 嘗試搜索位置時收到以下錯誤消息:
Google已禁止對此應用程序使用Maps API。 該網站無權使用所提供的Google Maps客戶端ID。 如果您是此應用程序的所有者,則可以在此處了解有關注冊URL的更多信息: https : //developers.google.com/maps/documentation/business/clientside/auth#registering_authorized_urls
這對我來說很混亂,因為我沒有傳遞任何客戶端ID。 這是相關的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 gem使用)一直在繼續工作。
我究竟做錯了什么?
編輯:可能值得注意的是,當我根本不使用API密鑰時,這也可以使用,盡管我不認為這是一個永久性的解決方案,因為生產站點將獲得太多流量以至於無法支付未支付的配額(正確?)。
我已經在Google API控制台的API下啟用了“ Google Maps JavaScript API v3”,但是這樣做后我需要重新生成密鑰。 令人沮喪的是,只有來自Google的錯誤消息的第一句話是任何正確的形式,但現在可以使用了。 歡呼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.