此IP,站点或移动应用程序无权使用此API密钥

时间:2014-02-21 11:30:41

标签: google-api google-places-api

我正在使用https://maps.googleapis.com/maps/api/geocode/json?链接服务器密钥和用户IP以查找任何地址的纬度和经度,当我尝试时我发现错误为

我有来自谷歌的服务器访问密钥,我已将服务器的IP地址放在白名单中。

我尝试通过PHP CURL访问的URL是:

  

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true&key=XXXXXXXXXXXX

我得到的结果:

Array ([error_message] => This IP, site or mobile application is not authorized to use this API key. [results] => Array ( ) [status] => REQUEST_DENIED)

我需要配置什么。地理编码API也已打开。

14 个答案:

答案 0 :(得分:137)

我遇到了同样的问题,我发现了这一点。

在网址上,它最终需要服务器密钥,而不是应用程序的api密钥。

所以基本上,你只需在URL的末尾添加服务器密钥,如下所示:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&sensor=true&key=SERVERKEY

现在,要获取服务器密钥,只需按照以下步骤操作:

1)转到开发者控制台https://code.google.com/apis/console/

2)在凭证中,在公共API访问下,创建新密钥

3)从选项中选择服务器密钥。

4)在字段中输入您的IP地址,如果您有更多的IP地址,您只需添加每一行。注意:仅输入IP地址当您想将它用于测试目的时。否则,将IP地址部分留空。

5)完成后,单击“创建”,将生成新的服务器密钥,然后您可以将该服务器密钥添加到您的URL中。

最后一点是,不是将sensor = true放在URL的中间,而是可以像这样添加它:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&key=SERVERKEY&sensor=true

这肯定会解决问题,只记得使用Places API的服务器密钥。

希望这个答案能够帮助你和其他观众。祝你好运.. :)

答案 1 :(得分:14)

除了分配给您的API密钥之外,Google还会通过查看REFERRER或IP地址来验证传入请求的来源。要在curl中运行示例,请在Google APIs console中创建一个新的Server Key。创建它时,您必须提供服务器的IP地址。在这种情况下,它将是您的local IP address。创建Server Key并将您的IP地址列入白名单后,您应该能够在curl中使用新的API密钥。

我的猜测是您可能已将API密钥创建为Browser Key,但不要求您将IP地址列入白名单,而是使用REFERRER HTTP标头标记进行验证。 curl默认不发送此标记,因此Google未能验证您的请求。

答案 2 :(得分:14)

  1. 选择键
  2. “ API限制”标签
  3. 选择API密钥
  4. 保存
  5. 选择应用程序限制->无
  6. 保存

enter image description here

enter image description here

enter image description here

enter image description here

答案 3 :(得分:5)

Google Places API目前不支持从Google API控制台生成的Android或iOS密钥。目前仅支持服务器和浏览器密钥。

答案 4 :(得分:2)

使用out referer创建一个键 不要输入引用地址

答案 5 :(得分:2)

Google Place API要求在进行API调用时包含referer HTTP标头。

包含HTTP标头“Referer:yourdomain.com”,这应该可以解决响应问题。

答案 6 :(得分:1)

还应为给定项目启用相应的API

https://console.developers.google.com/apis/library?project=projectnamehere

答案 7 :(得分:1)

对于iOS或Android应用,密钥需要额外授予权限。

转到Google控制台-> API和服务->库。点击适合您平台的地方信息库,然后点击启用。

请参见https://developers.google.com/maps/gmp-get-started#enable-api-sdk

答案 8 :(得分:0)

对于最新版本的API,对我而言似乎完全相反。

调用网址findViewById('R.id.textView').setText("message")时出现以下错误

  

您必须使用API​​密钥来验证对Google Maps Platform API的每个请求。有关更多信息,请参阅http://g.co/dev/maps-no-account

一旦我将订单切换为https://maps.googleapis.com/maps/api/geocode/json?address=<address>&key=<key>,它就可以正常工作。

请注意,上面收到的错误消息是我直接进入浏览器中的URL时收到的消息。当我从软件程序调用API时,我收到的HTML响应基本上包含以下消息:

  

很抱歉...,但是您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。

答案 9 :(得分:0)

您正在尝试使用API​​ KEY,但该API KEY的限制方式不允许执行此操作。

根据Google:

Note: If you need to call web, web service, and/or mobile APIs from the same (client-side) app, create and restrict multiple keys.

因此正确的做法是创建另一个API KEY,并为此选择正确的限制。在您的情况下,选择“ IP地址”(在“应用程序限制”下),然后使用“添加项”添加服务器ip。 请注意,留下空白列表将不起作用,并且会导致Google将您的限制更改为“无”。

此外,请不要忘记在“ API限制”下添加相关的API(在您的情况下为“地理编码API”)。

最后一件事-在您将应用程序链接到Google Cloud Billing Account之前,Google禁止使用此API。因此,如果您尚未执行此操作,则成功获得响应后,它会说您必须先执行此操作(它具有免费的入门包)。

答案 10 :(得分:0)

身份验证,配额,定价和政策 认证方式 要使用Directions API,您必须首先启用API并获取正确的身份验证凭据。有关更多信息,请参阅Google Maps Platform入门。

配额和定价 请查看使用情况和计费页面,以获取有关Directions API设置的配额和定价的详细信息。

政策 Directions API的使用必须符合API政策。

更多信息:访问:--- https://developers.google.com/maps/documentation/directions/start?hl=en_US

答案 11 :(得分:-1)

我遇到了问题,因为我没有在Google控制台中启用APL密钥。

答案 12 :(得分:-1)

  url = https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving&key=AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY

仅在AppDelegate中添加

            GMSServices.provideAPIKey("AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY")

并删除此URL中的密钥。

现在的网址是

https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving

答案 13 :(得分:-3)

禁用方向api和地理编码api,然后重新启用。

它只能工作5-10秒,然后会自动禁用。

这意味着您只有5到10秒钟的时间来测试作业。