Google地理编码API - REQUEST_DENIED

时间:2010-07-09 12:30:25

标签: google-app-engine google-maps-api-3

显然我不需要'Maps API密钥'来使用'Google地理编码API'根据:

http://code.google.com/apis/maps/documentation/geocoding/index.html

然而,我得到了这个:

{
  "status": "REQUEST_DENIED",
  "results": [ ]
}

这是否意味着我的IP被阻止了?我该怎么做才能克服这个问题?

16 个答案:

答案 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年或以后看这个页面的人,像我一样

不再需要传感器了,我试过并得到错误:

  

SensorNotRequired

我只需要激活我的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。

Example of project list in Google Developer Console

如果您仍遇到问题,可能需要考虑从Google的回复中打印出statuserror_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现在非常渴望金钱,不会“免费”打开更多产品。显然,他提供了免费的有限访问数量的咨询服务,并且在这种情况下,计费非常高。

https://cloud.google.com/maps-platform/pricing

答案 12 :(得分:1)

如果所有给定的解决方案均未解决该错误,则可能是有关Google Cloud Billing设置的问题。您必须在billing/enable的Google Cloud Project上启用计费功能。

Learn more

{
    "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 密钥)并且它起作用了。