gpt4 book ai didi

javascript - Google map API v3 key 停止工作

转载 作者:行者123 更新时间:2023-12-02 16:58:09 27 4
gpt4 key购买 nike

我正在开发一个网站,该网站使用 Google 地理编码通过搜索字符串获取某个位置的纬度/经度。该应用程序上周运行良好,但本周就停止了。我没有更改网站或 Google API 控制台上的任何内容;它只是自行停止工作。

这个网站是别人很久以前建的,历经了很多团队,所以有点乱。它实际上同时使用了 JS 地理编码器和 Ruby 地理编码器 gem。我创建了一个新的 Google 开发者帐户用于测试,并创建了两个公共(public) API 访问 key :1 个用于浏览器应用程序,1 个用于服务器应用程序。我将本地互联网的 IP(对于 localhost)和临时服务器设置为服务器 key ,并将浏览器 key 的引荐来源网址设置为 http://localhost:3000/*https://staging.myserver.com/*。这是上周五,一切都很顺利。

昨天,我在该网站上工作时,注意到地理编码器不再工作。我在尝试搜索位置时收到此错误消息:

Google has disabled use of the Maps API for this application. This site is not authorized to use the Google Maps client ID provided. If you are the owner of this application, you can learn more about registering URLs here: 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;
};

我尝试解决此问题的第一件事是从我的公共(public)访问 key 中删除所有 IP 和引荐来源网址。这不起作用,所以我使用全新的 key (没有 IP 或引荐来源网址)创建了一个全新的 Google 开发者帐户。我更新了网站上的 key ,重新启动......但仍然没有任何结果。我继续排除故障,但大约 20 分钟后它就开始自行工作了!再一次,我没有改变任何东西。

然而,今天早上,我遇到了与昨天相同的错误。查看我创建的第二个帐户的 Google API 控制台,我可以看到它已经超出了每天 0 个请求的配额...但是为什么它昨天还能工作呢?此外,为什么第一个帐户的 key 不起作用?我实际上在该帐户上启用了计费,因此它没有超出任何配额。

服务器 key (由 Ruby gem 使用)在整个过程中一直有效。

我做错了什么?

编辑:可能值得注意的是,当我根本不使用 API key 时,这也适用,尽管我不认为这是一个永久的解决方案,因为生产站点将获得太多流量而无法保持在未付费配额内(对吗?) .

最佳答案

我已在 Google API 控制台中的 API 下启用了“Google Maps JavaScript API v3”,但在执行此操作后我需要重新生成 key 。有点令人沮丧的是,谷歌发出的错误消息中只有第一句话是正确的,但它现在可以工作了。万岁!

关于javascript - Google map API v3 key 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com