显然我不需要'Maps API密钥'来使用'Google地理编码API'根据:
http://code.google.com/apis/maps/documentation/geocoding/index.html
然而,我得到了这个:
{
"status": "REQUEST_DENIED",
"results": [ ]
}
这是否意味着我的IP被阻止了?我该怎么做才能克服这个问题?
答案 0 :(得分:72)
直到2014年底,此错误的常见原因是从请求中省略了强制sensor
参数,如下所示。但是,截至2014/12/31或更早版本不再需要:
传感器参数
Google Maps API之前要求您包含传感器参数,以指示您的应用程序是否使用传感器来确定用户的位置。不再需要此参数。
您是否在请求中指定了sensor
参数?
“REQUEST_DENIED”表示您的请求被拒绝,通常是因为缺少传感器参数。
sensor(必需) - 指示地理编码请求是否来自具有位置传感器的设备。该值必须为true或false
答案 1 :(得分:19)
删除APIKEY参数及其价值
例如。 https://maps.googleapis.com/maps/api/geocode/json?address=[YOUR ADDRESS]&sensor=true
答案 2 :(得分:18)
我发现在我的情况下,在添加key = API_KEY 之后调用没有安全协议的服务(意思是:http)会导致此问题。 改为https解决了它。
答案 3 :(得分:10)
如果您只是复制并粘贴Google在其网站中提供的示例网址 http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false 由于传感器参数错误,它会失败。您应该将其更改为true或false,而不是他们编写的那个。 也许是你遇到的错误,就像它发生在我身上一样......
答案 4 :(得分:10)
我注意到如果您没有对地址进行正确的URL编码,您也会获得某些地址的REQUEST_DENIED。例如,在
中123 Main St #B,Mytown,CA 94110
'#'字符需要编码为%23
答案 5 :(得分:8)
对于那些在2017年或以后看这个页面的人,像我一样
不再需要传感器了,我试过并得到错误:
我只需要激活我的Google Maps Geocoding API,现在似乎是必要的。
希望能帮助像我这样的人。
答案 6 :(得分:7)
我遇到了这个问题,我意识到我假设Geocoding附带了JS maps API。但是,它是一个单独的API,我在云控制台中没有启用它。启用它立即修复它。
答案 7 :(得分:4)
哎呀谷歌不要告诉你这个帐户没有启用你的服务。尝试先启用它。 到这里https://console.developers.google.com/project 并创建一个激活了地方服务的新项目,这可以解决您的问题。
答案 8 :(得分:3)
我使用drupal 7 Location模块也遇到了这个问题。自动填充所有空位置会导致此错误。手动执行其中一个请求到位置api导致返回的JSON中出现此错误:
“与此API一起使用时,浏览器API密钥不能具有引用限制。”
解决问题很简单:创建一个没有任何限制的新密钥,并仅将其用于地理编码。
对于谷歌api密钥的新用户注意:通过限制,他们意味着使用api密钥限制请求到特定域/子域。 (例如,只允许来自http://yourdomain.com的请求)。
答案 9 :(得分:3)
对于遇到此问题的人,我发现Geocoding API不能与具有引荐来源限制的API密钥一起使用。只需删除所有引荐来源限制,您应该做得很好。
如果您正在使用任何其他允许带有引荐来源限制的键的API(例如Maps JS API),那么最好创建第二个键,没有任何限制专门用于地理编码,因为其他API可能会显示您的键公开,其他人可以开始在他们自己的网站上使用它。
答案 10 :(得分:2)
正如您所说,这可能意味着您的IP地址已被阻止。我确保您在地理编码API请求的查询字符串上指定了key参数。
https://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=Placename&key=XXxxxXXxXxxxxXXxx
另外请确保如果您在开发者控制台中设置了IP地址限制,那么您已经允许使用正确的IP地址,只需单击列表中的项目即可看到允许的IP。
如果您仍遇到问题,可能需要考虑从Google的回复中打印出status
和error_message
元素的值,您会看到如下内容:
REQUEST_DENIED - This IP, site or mobile application is not authorized to use this API key. Request received from IP address 123.4.5.678, with empty referer
如果没有提及IP地址限制,它可能会向Google提供有关该问题的足够信息。
答案 11 :(得分:2)
如果您尚未使用信用卡配置账单帐户,则该API无效。 Google现在非常渴望金钱,不会“免费”打开更多产品。显然,他提供了免费的有限访问数量的咨询服务,并且在这种情况下,计费非常高。
答案 12 :(得分:1)
如果所有给定的解决方案均未解决该错误,则可能是有关Google Cloud Billing设置的问题。您必须在billing/enable的Google Cloud Project上启用计费功能。
{
"error_message" : "You must enable Billing on the Google Cloud Project at https://console.cloud.google.com/project/_/billing/enable Learn more at https://developers.google.com/maps/gmp-get-started",
"results" : [],
"status" : "REQUEST_DENIED"
}
答案 13 :(得分:0)
Google返回了非常有用的错误消息,可帮助纠正该问题!
Dim Request As New XMLHTTP30
Dim Results As New DOMDocument30
Dim StatusNode As IXMLDOMNode
Request.Open "GET", "https://maps.googleapis.com/maps/api/geocode/xml?" _
& "&address=xxx", False
Request.Send
Results.LoadXML Request.responseText
Set StatusNode = Results.SelectSingleNode("//status")
Select Case UCase(StatusNode.Text)
Case "REQUEST_DENIED"
Debug.Print StatusNode.NextSibling.nodeTypedValue
...
错误消息示例
消息1: 对此API的请求必须通过SSL。使用“ https://”加载API 而不是“ http://”。
消息2: 服务器拒绝了这一要求:必须使用API密钥,可以相互验证请求,谷歌地图平台API。有关其他信息,请...
答案 14 :(得分:0)
id
启用了定向服务对我有用
答案 15 :(得分:0)
我刚刚在我的谷歌云平台上启用了我的地理编码 API、地理定位 API 和地点 API(我在那里生成了我正在使用的 API 密钥)并且它起作用了。