我正在尝试创建一个自动填充字段,该字段应根据用户输入的内容获取城市,方法是使用本教程中所述的Google Places API: https://developers.google.com/places/training/autocomplete-android
你之前我可能已经多次发现过这个问题,但没有一个答案对我有帮助。以下是你应该知道的事情:
请不要回复说你用自己的API替换了API密钥并且它有效 - 那里的API密钥必须是特定于Android的,并且不能在浏览器中运行。
我是否使用从我签署应用程序的密钥库中获取的SHA1指纹制作Android API密钥。 我从控制台打开了Maps and Places API。 不超过配额。
所有这些仍然给了我REQUEST_DENIED
我没有提到的是我已经激活了O2Auth - 这会改变什么吗?它不应该像在应用程序中放置API密钥一样简单吗?
谢谢!
答案 0 :(得分:94)
虽然已经回答了这个问题,但我认为社区可以做得更好。
我正在撕扯我的头发,这对我来说没有意义..我正在制作iOS / Android应用程序,所以我制作了iOS / Android Key ...... <强>错误。强>
使用Google的Places API,甚至不会考虑您的包标识符。
你真正想做的是: (我正在使用新的用户界面)
<强> 1。登录https://cloud.google.com/console#/project
选择您的项目名称,然后进入 API&amp; Auth&gt;的API 强>
确保您已启用Places API。这是Places-API唯一需要启用的功能。
<强> 2。进入凭证
单击“公共API访问”下的“创建新密钥”
第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
<强> 6。享受强>
现在,您可以在Android / iOS设备上使用上述网址。
答案 1 :(得分:28)
Google Places API目前不支持从Google API控制台生成的Android或iOS密钥。目前仅支持服务器和浏览器密钥。
如果您想申请此支持,请提交Places API - Feature Request。
答案 2 :(得分:4)
https://developers.google.com/places/training/autocomplete-android
存储您的API密钥
虽然上面的代码演示了如何直接通信 在Android应用和地方自动填充服务之间,你应该 不要将您的Places API密钥存储在您的应用中。
因此,您应该构建一个存储API密钥的Web应用程序 并代理Places API服务。为了保证沟通 在您的Android应用和代理Web服务之间,您应该要求 用户身份验证代理Web服务。您的Android应用可以 安全地存储用户凭据并将其传递给您的Web服务,或 用户可以通过Android WebView登录您的Web应用程序。
对于后一种方法,您的Web应用程序应创建并返回用户 您的Android应用的身份验证令牌,以及您的Android应用应该 随后将此令牌传递给您的代理Web服务。
答案 3 :(得分:1)
转到Google云平台控制台> 凭据,然后点击“选择”,然后选择 YOUR_API_KEY 应用程序限制>选择无 strong>选项> 保存。
如果您从应用程序限制中选择了 android应用选项,则Google会拒绝Place API,但 REQUEST_DENIED 除外。
答案 4 :(得分:0)
在Google开发者控制台中,您应该能够同时找到&#34; Places API&#34;和#34; Places API for Android&#34;
请务必使用&#34; Places API for Android&#34;
出于某种原因,&#34;适用于Android的场所API&#34;隐藏在API列表中,但可以使用搜索进行访问。
答案 5 :(得分:0)
我有同样的问题,我通过离开
解决了这个问题浏览器键中的接受来自这些HTTP引用者(网站)的请求(可选)
为空
答案 6 :(得分:0)
我还是新手,所以我无法发表评论,但为了解释Moe的答案,我通过以下步骤解决了一些类似的Google Maps API问题(有关路线,使用Volley):< / p>
meta-data
代码中的application
代码中的AndroidManifest.xml
标记存储为android:name="com.google.android.maps.v2.API_KEY"
标记,并将android:value
和users
uid_0
age: "37"
name: "Larry"
reading_list:
item_0: "Discovery"
item_1: "Astronomy"
item_2: "Popular Mechanics"
作为密钥。这用于与Maps API直接交互(减去URL查询)。我不确定这是否也适用于Places API的URL查询,如果您只需要服务器API密钥,或者是否有更好的解决方案,但这对我有用。
我认为它只适用于第一个键 - 不限于Android的键。
答案 7 :(得分:0)
在Google Cloud Console的内部,键入Places并将其激活。创建API密钥,然后像平常一样将其插入到Android Studio应用中。就是这样。
答案 8 :(得分:0)
我有同样的问题。对我来说,关键是启用项目计费。我仍在使用“ Android应用程序”限制。设置付款方式后,Places Api开始工作。
在使用Android版Places SDK之前,请执行以下操作:
- 按照获取API密钥指南获取,添加和限制API密钥。
- 为每个项目启用计费。
- 为每个项目启用Places API。
there看到它。
请确保还检查Google Places API的计费计划,因为它不是免费的!