这个IP地址、网站或移动应用未被授权使用此API密钥,因为IP地址未被授权。

8
我正在使用谷歌地点API,该API要求您提供允许使用服务的IP列表。该API在我的本地机器上运行良好,但是当我从生产服务器使用它时,它会显示

此IP、站点或移动应用程序未获得授权使用此API密钥

我已添加所需的IP地址。还有其他什么问题或如何调试它的想法吗?


你确定你提供了正确的IP地址吗?你的服务器IP地址可能不是从外部看到的IP地址。这只是一个提示... - MrUpsidown
可能是此IP、网站或移动应用程序未被授权使用此API密钥的重复问题。 - jww
3个回答

28

我曾经也遇到同样的问题,后来找到了这篇文章。

在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中。

最后一件事是,您可以像这样在URL末尾添加传感器=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仪表板。
  • 在开发者控制台中,从左侧导航面板中找到标签
  • 选择项目
  • 从左侧导航面板选择凭据
  • 您可以根据需要从顶部导航栏创建凭据类型。

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


1
你好mike20132013,你非常清晰地、逐步地解释了答案,为了完善你的答案,我想再添加一步,这是有时程序员会忘记的。所以当你按照上面回复中提到的所有步骤完成后,然后在Google地图控制台的API和身份验证左侧窗格下找到APIs,你会看到Google Maps APIs图标,点击更多按钮,然后点击Google Places API Web Service,这样你就可以启用API并享受它了。 - user3449960
1
我收到了 error_message: "提供的 API 密钥已过期。" 异常。 - Rethinavel
之前没有遇到过这个消息,但看起来你的密钥已经过期了。尝试在仪表板上更新密钥,我相信你可以为你正在开发的应用程序/网络应用程序重新生成API密钥。 - mike20132013
遇到相同的问题,Google中没有名为“服务器密钥”的API密钥,只有生成的简单API密钥,我将其限制为Android应用程序,并添加了我的包名称和SHA1。但仍然出现错误。请告诉我如何获取服务器密钥?我正在为Android移动应用程序工作。 - Hardik Vegad
你好 @mike20132013,能告诉我在哪里找到公共API访问吗?我在凭据下没找到它。 - Sushree Swagatika
1
@SushreeSwagatika 我相信过去几年中网址已经发生了变化。您可以从这里访问开发人员控制台 - https://console.developers.google.com/apis/dashboard,选择项目并从左侧面板选择凭据,然后按需创建凭据。 - mike20132013

15
您需要启用以下地点API:
  • Google Places API Web服务
因为您正在进行HTTP请求。

非常感谢!现在我的地址搜索速度提高了百分之一百! - uiltonsantos
很好的提示,你救了我的一天。 - Dinesh Anuruddha

0

作为最佳实践[1],您需要为每个应用程序/平台(iOS、Android、服务器端、客户端)使用单独的API密钥,并设置相应的应用程序限制(iOS应用程序、Android应用程序、HTTP引用、IP地址)。

在您的情况下,您需要一个针对Android的API密钥,限制为您的SHA-1签名证书指纹。另外,您还需要一个用于Web服务请求的API密钥,限制为IP地址。

当使用Android设备时,设置IP地址可能会导致一些问题,因为这些设备使用动态IP地址,会不断变化[2]。为了解决这个问题,您需要设置代理服务器[3]以获取静态公共IP地址,以便您可以使用IP限制。

如果您有任何问题,请告诉我。 此致, Maria Google Maps平台团队


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接