21

我正在尝试使用本教程中描述的 Google Places API 创建一个自动完成字段,该字段应在用户类型时获取城市: https ://developers.google.com/places/training/autocomplete-android

您可能以前和我一样多次发现这个问题,但没有一个答案对我有帮助。以下是你应该知道的事情:

网址是 https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false&key=myKey&components=country:ro&input=whatTheUserTypes

请不要回复说您用自己的 API 密钥替换了它并且它可以工作 - 那里的 API 密钥必须是 Android 特定的,并且不能在浏览器中工作。

我是否使用从我签署应用程序的密钥库中获得的 SHA1 指纹来制作 Android API 密钥。我从控制台打开了 Maps and Places API。未超过配额。

所有这些,它仍然给我 REQUEST_DENIED

我没有提到的是我激活了 O2Auth - 这会改变什么吗?不应该是把API key放到app里那么简单吗?

谢谢!

4

9 回答 9

94

虽然已经回答了这个问题,但我认为社区可以做得更好。

我为此烦恼不已,这对我来说没有意义..我正在制作一个iOS / Android应用程序,所以我制作了一个iOS / Android密钥...... 错了。

使用 Google 的 Places API,甚至不会考虑您的捆绑标识符。

你真正想做的是:(我正在使用新的用户界面)

1. 登录https://cloud.google.com/console#/project

选择您的项目名称,然后进入API's & Auth > APIs

确保您已打开 Places API。这是唯一需要打开 Places-API 才能工作的东西。 在此处输入图像描述

2.进入凭证

单击公共 API 访问下的创建新密钥 在此处输入图像描述

3. 选择浏览器密钥 在此处输入图像描述

4.点击创建,没有别的

将 HTTP 引用框留空。

在此处输入图像描述

5.使用这里生成的密钥

此密钥将允许来自任何设备的任何用户通过您的开发人员登录访问 API。您可以在这里尝试一下:(请务必将YOUR_KEY_HERE替换为您生成的密钥)

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Food%20Sh&sensor=false&radius=500&location=0,0&key=YOUR_KEY_HERE

6.享受

现在您可以在您的 Android/iOS 设备中使用上面的 URL。

于 2013-12-27T07:40:20.730 回答
28

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

如果您想请求此支持,请提交Places API - 功能请求

于 2013-02-07T05:51:19.260 回答
5

https://developers.google.com/places/training/autocomplete-android

存储您的 API 密钥

尽管上面的代码演示了如何在 Android 应用程序和 Places Autocomplete 服务之间直接通信,但您不应将 Places API 密钥存储在您的应用程序中。

因此,您应该构建一个 Web 应用程序来存储您的 API 密钥并代理 Places API 服务。为了保护您的 Android 应用程序和代理 Web 服务之间的通信,您应该要求对您的代理 Web 服务进行用户身份验证。您的 Android 应用可以安全地存储用户凭据并将其传递给您的 Web 服务,或者用户可以通过 Android WebView 登录到您的 Web 应用。

对于后一种方法,您的 Web 应用程序应创建用户身份验证令牌并将其返回给您的 Android 应用程序,然后您的 Android 应用程序应随后将此令牌传递给您的代理 Web 服务。

于 2013-08-02T01:42:57.050 回答
1

转到谷歌云平台控制台>凭据单击编辑,选择您的YOUR_API_KEY >应用程序限制>选择选项>保存就是它。

如果您从应用程序限制中选择android 应用程序选项,则谷歌会拒绝该地点 API,但会出现异常REQUEST_DENIED

于 2020-05-10T09:52:43.867 回答
0

在 Google 开发控制台中,您应该能够找到“Places API”和“Places API for Android”

开发控制台搜索

确保使用“Places API for Android”

由于某种原因,“Places API for Android”隐藏在 API 列表中,但可以使用搜索访问。

于 2015-03-31T08:42:06.640 回答
0

我还是新手,所以我无法发表评论,但为了阐明 Moe 的答案,我通过以下步骤解决了一些关于 URL 查询(用于方向,使用 Volley)的类似 Google Maps API 问题:

  1. 获取 Android API 密钥(在我的例子中包括 Google Maps Directions API)。
  2. 获取“服务器”API 密钥(这似乎是通过使用“HTTP 引用者”的密钥限制来创建的 - 实际上,它只是用于通过 HTTP 发出 URL 查询)。
  3. 将 Android API 密钥作为meta-data标签存储在application标签中AndroidManifest.xmlandroid:name="com.google.android.maps.v2.API_KEY"android:value作为您的密钥。这用于与 Maps API 的直接交互(减去 URL 查询)。
  4. 每次发出 URL 查询时使用服务器 API 密钥。

我不确定这是否也适用于 Places API 的 URL 查询,是否只需要服务器 API 密钥,或者是否有更好的解决方案,但这对我有用。

我想它只适用于第一个键 - 不限于 Android。

于 2017-07-17T18:03:22.537 回答
0

我有同样的问题,我通过离开来解决它

接受来自这些 HTTP 引荐来源网址(网站)的请求(可选)

在浏览器键中为空

于 2016-02-24T23:00:43.503 回答
0

在 Google Cloud Console 中输入 Places 并激活它。像往常一样创建一个 API 密钥并将其插入到您的 Android Studio 应用程序中。就是这样。

于 2019-09-09T02:19:31.173 回答
0

我有同样的问题。对我来说,关键是启用项目计费。我仍在使用“Android 应用程序”限制。设置付款方式后,Places Api 开始工作。

在使用 Places SDK for Android 之前,请执行以下操作:

  • 按照获取 API 密钥指南获取、添加和限制 API 密钥。
  • 为您的每个项目启用计费。
  • 为您的每个项目启用 Places API。

在那里看到它。

请务必查看 Google Places API 的计费计划,因为它不是免费的!

于 2020-02-04T18:06:03.437 回答