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


99

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

我有一个来自Google的服务器访问密钥,并且已将服务器的IP地址放在其白名单中。

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

https://maps.googleapis.com/maps/api/geocode/json?address=1600+露天剧场+百汇,+山景+景观,+ 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也已打开。


您必须从Google获得授权密钥,并将其放入api
Dimag Kharab 2014年

已经有可用的API密钥
桑特(Sanket)2014年

检查由Mike它的工作对我的答案
Sheraz艾哈迈德Khilji

接受mike20132013的答案!有用!
aveschini

Answers:


150

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

在url上,最后需要服务器密钥,而不是应用程序的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

编辑

我相信网站的网址在过去几年中已经发生了变化。您可以立即从此处访问开发者控制台-https: //console.developers.google.com/apis/dashboard

  • 导航到开发者控制台-https: //console.developers.google.com/或使用详细信息中的链接直接导航到API仪表板。
  • 在开发者控制台下,从左侧导航面板中找到“ 标签
  • 选择项目
  • 从左侧导航面板中选择凭据
  • 您可以根据需要从顶部导航栏创建凭证类型。

希望这个答案对您和其他观众有帮助。祝好运 .. :)


8
非常重要4)在字段上输入IP地址,如果您有更多的IP地址,则只需在每行上添加即可。注意:仅当您要将IP地址用于测试目的时,才输入IP地址。否则将“ IP地址”部分留空。
Sheraz Ahmad Khilji 2014年

6
没错。.仅指定用于测试目的的IP地址。否则,将其留空。因为您限制了应用程序或api键只能在特定设备/应用程序上使用。
mike20132013 2014年

1
@johnshumon是的,我想..很久没有更新答案了。可能是一些新的API更改。
mike20132013 2015年

1
可能还需要确保Google Places API网络服务也已启用API
Justin Wilson

1
经过数小时的努力,才发现现在必须将新的“项目”链接到Google云计费帐户,以便Google API停止提供这些各种通用错误。阈值可以设置为$ 0,因此,如果使用量超出允许的配额,则不会向您收费。
闪亮的

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

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


我有但在API的限制,一些上市不服务地理编码
穆罕默德乌默尔

像魅力一样运作。感谢您尝试进行地理编码。正如您所指出的,我将应用程序限制设置为无,并且它可以正常工作。
拉维

4
限制:没有一个是非常危险的。
Deniss M.19年

8
禁用安全性不是解决方案!
Bartholomej

不要让API密钥不受限制! 现在,新的“项目”必须链接到结算帐户,以便Google API停止提供这些各种通用错误。阈值可以设置为$ 0,因此,如果使用量超出允许的配额,则不会向您收费。
闪亮的

14

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

我的猜测是您可能将API密钥创建为Browser Key,不需要将IP地址列入白名单,而是使用REFERRERHTTP标头标签进行验证。curl默认情况下不会发送此标签,因此Google无法验证您的请求。


1+将需要创建服务器API密钥才能使用Google的地理编码服务。还需要从Google的API控制台启用Google地图地理编码服务。
Sumit Munot

经过数小时的努力,才发现新的“项目”现在必须链接到Google云计费帐户,以便Google API停止提供这些各种通用错误。阈值可以设置为$ 0,因此,如果使用量超出允许的配额,则不会向您收费。
闪亮的

6

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


1
有趣的是...那么如何生成用于Android或iOS应用程序的密钥?
Graham Perks

您的浏览器键可在Android和iOS中使用。获取谷歌API控制台浏览器键
Nazrul回教

他们没有付出额外的努力。昨天令人沮丧的一天之后,我才想到了这一点。应用还有一个额外的步骤:stackoverflow.com/a/58136437/434004
Graham Perks,

3

您正在尝试使用一种受限的API密钥,该密钥不允许执行此操作。

根据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。因此,如果您尚未执行此操作,则一旦成功获得响应,它就会说您必须先执行此操作(它具有免费的入门包)。



2

Google Place API要求在进行API调用时包含引荐来源网址HTTP标头。

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


1
虽然这可以回答问题,但在回答中放一些文字来解释您的工作始终是一个好主意。阅读如何写一个好的答案。另外,您应该包括一些代码。
耶尔- [R

您能否提供一个
摘要

这就是我所做的,并且效果很好:var options = {url:url,headers:{Referer:' xxx.herokuapp.com '}}; request.get(options,function(...
Florida G.17

1

此外,应为给定项目启用相应的API

https://console.developers.google.com/apis/library?project=projectname此处


1

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

呼叫网址https://maps.googleapis.com/maps/api/geocode/json?address=<address>&key=<key>时,出现以下错误

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

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

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

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


经过数小时的努力,才发现新的“项目”现在必须链接到Google云计费帐户,以便Google API停止提供这些各种通用错误。阈值可以设置为$ 0,因此,如果使用量超出允许的配额,则不会向您收费。
Sparky


0

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

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

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

详细了解:请访问:--- https://developers.google.com/maps/documentation/directions/start?hl=zh_CN


-2
  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

-3

停用Directions api和geocoding api并重新启用。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.