即使使用正确的API密钥,Google Places API请求也会因Android自动填充而被拒绝

Ste*_*acu 19 android google-places-api

我正在尝试创建一个自动填充字段,该字段应该根据用户输入的方式提取城市,方法是使用本教程中所述的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密钥并且它有效 - 那里的API密钥必须是特定于Android的,并且不能在浏览器中运行.

所以我使用从我签署应用程序的密钥库中获取的SHA1指纹来制作Android API密钥.我从控制台打开了Maps and Places API.不超过配额.

所有这些仍然给了我REQUEST_DENIED

我没有提到的是我已经激活了O2Auth - 这会改变什么吗?它不应该像在应用程序中放置API密钥一样简单吗?

谢谢!

Moe*_*Moe 94

虽然这已得到回答,但我认为社区可以做得更好.

我正在撕扯我的头发,这对我来说没有意义..我正在制作一个iOS/Android应用程序,所以我制作了一个iOS/Android Key ...... 错了.

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

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

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

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

确保您已启用Places API.这是Places-API唯一需要启用的功能. 在此输入图像描述

2.进入凭据

单击Public API Access下的CREATE NEW KEY 在此输入图像描述

3.选择BROWSER KEY 在此输入图像描述

4.单击"创建","否则"

将HTTP Refer框保留为空.

在此输入图像描述

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
Run Code Online (Sandbox Code Playgroud)

6.享受

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

  • 谢谢!这在2015年对我有用,但自从这个答案后用户界面有所改变.我必须在API下启用"Google Places API Web服务"才能使用此功能. (4认同)

Chr*_*een 28

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

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


小智 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 服务。