如何正确设置Google API凭据和地址解析限制

时间:2019-01-31 10:54:06

标签: javascript json google-maps

我们正在使用我们网站上的Google Maps API来交叉检查用户的地址条目。

一个典型的电话是: https://maps.googleapis.com/maps/api/geocode/json?key=XXXX&address=12-6戴利街(Daly St),维多利亚州,澳大利亚,玛丽堡,3465

XXXX当然是从凭据中获取的密钥。

我们已经在开发人员控制台中设置了凭据。 启用了Maps JavaScript API,Geocoding API,Geolocation API等。

我们遇到的问题是,我们无法通过“ HTTP Referrers(网站)”或“ IP地址(Web服务器,cron作业等)”来限制密钥。 结果是我们必须将“应用程序限制”保留为“无”。

只要我们限制此键,就会返回错误:

With "HTTP referrers (web sites)", the error is:
"API keys with referer restrictions cannot be used with this API."

With "IP addresses (web servers, cron jobs, etc.)", the error is:
This IP, site or mobile application is not authorized to use this API key. Request received from IP address XXXXX

有人可以帮助我们获得正确的设置吗? 我们还意识到,API费用在上个月急剧增加,这可能表明配额被盗,因此必须限制密钥。

还有,上个月费用增加还有其他原因吗?

预期的行为:API返回具有纬度,经度等的JSON信息,如果我们未设置限制,该信息将起作用。

实际行为:尽管添加了限制,但JSON响应是上述消息的错误。

更新

我通过ajax用Javascript调用了上述URL,并将async设置为false。 我按照此处显示的说明更改了呼叫:https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple

限制(HTTP引用)现在可以正常工作。

我的问题是,当地址正确时我可以返回日志和值,但是当地址错误时什么也不会发生。

我的代码中包含以下内容:

<script async defer src="https://maps.googleapis.com/maps/api/js?key=MY-KEY&callback=clf_init"></script>
<script>
var geocoder;
function clf_init() {
    geocoder = new google.maps.Geocoder();
}

function submit(){
    var address = document.getElementById('address').value;
    geocoder.geocode({ 'address': address }, function(results, status) 
    {
        console.log("STATUS: " +status);
        console.log("RESULT: " + JSON.stringify(results));
        if (status==='OK') {
            console.log("SUCCESS");
        }
        else {
            console.log("ERROR");
        } 
    });
}

如前所述,如果地址正确,我将收到“状态:确定”日志,但是如果地址不正确,则根本不会获得任何日志,就好像该函数未执行一样。 知道为什么会这样,以及我应该如何更改代码以处理错误?

0 个答案:

没有答案