使用 Google Places API 时的 REQUEST_DENIED

Posted

技术标签:

【中文标题】使用 Google Places API 时的 REQUEST_DENIED【英文标题】:REQUEST_DENIED when using the Google Places API 【发布时间】:2012-01-15 17:05:06 【问题描述】:

我正在尝试使用以下网址向 Google Places API 发出请求:https://maps.googleapis.com/maps/api/place/search/xml?location=37.77264,-122.409915&radius=500&types=educational%20services&name=everest%20college%20san%20francisco&sensor=false&key=YourApiKey

这是我得到的回复:

<PlaceSearchResponse>
  <status>REQUEST_DENIED</status>
</PlaceSearchResponse>

知道上面的网址有什么问题吗?

【问题讨论】:

您是否在 API 控制台中验证了您的密钥是否有效:code.google.com/apis/console ? 您有必填字段:radius、sensor、key、location=geo 和 key,所以它对我来说是正确的。 自动完成搜索 Google API 需要“服务器应用程序密钥”。 【参考方案1】:

正如@Bryan Weaver 在 cmets 中提到的那样,您的密钥看起来无效。在请求中替换我自己的密钥会返回 ZERO_RESULTS。

顺便说一句,您还应该查看list of supported types -education%20services 不是其中之一。这不是给你 REQUEST_DENIED 的原因,但无论如何它都值得修复。如果您想指定多种类型,请用竖线 (|) 分隔它们。

【讨论】:

【参考方案2】:

也许您应该在您发送的 Url 末尾添加“&sensor=true /false”。

【讨论】:

这对我有用。在浏览器(不是 android 项目)中,将传感器设置为 true。 这不是解决方案,恕我直言。虽然文档说这可能是原因,但其他原因也可能导致这种情况。 不再需要传感器参数。【参考方案3】:

Places API 与地图 API 不同。请在您的 API 控制台上单独启用 Places API

【讨论】:

【参考方案4】:

很高兴看到这么多解决方案。让我在列表中添加另一个。您也可以尝试将端口地址更改为 443 以获取 Places API 的响应

【讨论】:

这是什么意思?能详细点吗? 我不知道为什么会修复它,但它对我有用。只要我把 :443 放在域名前面,它就立即起作用了,但是浏览器(Chrome)从地址中删除了 :443。但随后,我可以只使用没有 :443 的普通地址,它仍然有效。奇怪!!【参考方案5】:

重要提示:转到 api 控制台 here,然后转到 SERVICES 并检查您的“Places API”是否已打开

【讨论】:

【参考方案6】:

我遇到了同样的问题,请求不断被拒绝。

我再次检查以确保我的 API 密钥正确,但我没有意识到我需要从 API 控制台创建一个新的服务器密钥。现在我得到零结果,而不是被拒绝的消息。

【讨论】:

【参考方案7】:

在此处转到 api 控制台,然后转到 SERVICES。单击活动服务选项卡并确认“Places API”已打开。点击 ?旁边的“尝试”链接。它应该使用您的密钥创建一个正确的 URL,该 URL 应该可以工作。比较您尝试的链接与此 URL 的差异。

【讨论】:

【参考方案8】:

在我的例子中,它是 HTTPS 而不是 HTTP,而且范围很小。

【讨论】:

【参考方案9】:

在我的情况下,问题是我尝试使用 Android 的 API 密钥(这看起来很合乎逻辑),但后来我尝试将其更改为浏览器的 API 密钥,它现在终于可以正常工作了。为什么?不要问我。 :)

希望有所帮助。

【讨论】:

【参考方案10】:

注意:- 我已经在 Android APP 中实现了它。

我在使用这个 API 时遇到了同样的问题..

网上提供的大多数解决方案/建议都与错误的密钥有关。

但是如何获得合适的密钥呢?对此几乎没有帮助。

就我而言,其背后的唯一原因错误的KEY

我使用我的Android Key (The one we use for google Maps) 访问google places,这就是为什么它给了我ACCESS DENIED 响应。

挣扎了几个小时后,我在 Google API 文档中注意到某处有一个屏幕截图如何创建 KEY

我注意到他们使用的密钥在"Key for browser apps (with referers)"

而我使用的是"Key for Android apps (with certificates)"

.....

to get the respective key We need to create a Browser Key.

我最初使用的密钥是

所需的密钥是

获取所需的密钥:- 只需点击 "Browser Key" 并再次点击它要求的有关某些 url 的输入不是必填字段

更多详情如何在ANDROID中使用它refer this link

别忘了从 API 控制台开启服务 "Places API"

【讨论】:

“接受来自这些 HTTP 引用的请求”部分很重要,当您在开发站点(或本地)上工作时必须将其留空。【参考方案11】:

我遇到过类似的问题,已修复并发现了一些可能有助于解决此问题的方法

使用 http 而不是 https 将导致 REQUEST_DENIED 省略 &userIp=x.x.x.x 将导致 REQUEST_DENIED 需要生成和使用服务器密钥,以防请求来自 php 脚本,即使用户仅通过浏览器使用,否则将导致 REQUEST_DENIED 需要几分钟才能测试允许的 IP 列表是否已更改

希望对大家有所帮助

【讨论】:

【参考方案12】:

我的情况是我打开了 API,我生成了 API 密钥,但我还添加了一些 IP 地址来限制 API 请求的来源。但是,如果您在本地开发,则不应设置任何 IP 地址,因为 IP 地址可能来自您的路由器(192.168.1.120)或来自 ISP(238.382.33.298)或其他任何东西,因此没有好的方法来限制按 IP 地址的 API 请求。

本地开发时,设置为空白。

当您部署到具有恒定 IP 地址的生产服务器或其他开发服务器时,请将其设置为服务器的 IP 地址。

【讨论】:

【参考方案13】:

要查找实际错误,请直接在浏览器中运行 api 查询或将错误映射到您的对象。


   "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",
   "html_attributions" : [],
   "results" : [],
   "status" : "REQUEST_DENIED"

【讨论】:

以上是关于使用 Google Places API 时的 REQUEST_DENIED的主要内容,如果未能解决你的问题,请参考以下文章

Android Google Places API - PlaceAutocompleteFragment 清除按钮监听器

使用 google-places-api 的简单 html 页面的 ApiNotActivatedMapError

反应:Google Places API/ Places 详细信息

新的 Google API 密钥“Google Maps API v3”不适用于 Google Places API?

Android Google Places API,getAutocompletePredictions 返回状态“PLACES_API_ACCESS_NOT_CONFIGURED”

使用Javascript从Google Places搜索api获取纬度和经度