即使使用正确的api密钥,Google地图API请求也会被拒绝进行Android自动填充
我正在尝试创build一个自动填充字段,该字段应按照本教程中的说明使用Google Places API以用户types获取城市: https : //developers.google.com/places/training/autocomplete-android
你以前可能曾经多次发现过这个问题,但是没有一个答案对我有帮助。 以下是你应该知道的事情:
该url是https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false&key=myKey&components=country:ro&input=whatTheUserTypes
请不要回复说你用自己的代替了API密钥,它的工作原理 – 去那里的API密钥必须是Android特定的,不能从浏览器工作。
所以我使用从我签名应用程序的keystore获得的SHA1指纹来制作Android API密钥。 我从控制台中打开了地图和地点API。 配额不超过。
所有这些,它仍然给我REQUEST_DENIED
我没有提到的是我有O2Auth激活 – 这是否改变了什么? 不应该像在应用程序中放置API密钥一样简单吗?
谢谢!
Google Places API目前不支持从Google API控制台生成的Android或iOS密钥。 目前仅支持服务器和浏览器密钥。
如果您想申请此支持,请提交Places API – function请求 。
虽然已经有了答案,但我认为社区可以做得更好。
我正在撕裂我的头发,这只是没有意义的..我正在做一个iOS / Android应用程序,所以我做了一个iOS / Android的密钥… 错了。
使用Google的Places API,甚至不考虑您的包标识符。
你真正想做的是这样的:(我使用新的用户界面)
1.login到https://cloud.google.com/console#/project
select您的项目名称,然后进入API的&Auth> API
确保您已启用Places API。 这是Places-API需要启用的唯一工作。
2.进入凭证
点击Public API Access下的CREATE NEW KEY
3.selectBROWSER KEY
4.点击Create,Nothing Else
保留HTTP引用框为空。
5.使用此处生成的密钥
此密钥将允许任何设备的用户通过您的开发者login访问API。 你可以在这里试试:(一定要用你生成的密钥replaceYOUR_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。
https://developers.google.com/places/training/autocomplete-android
存储您的API密钥
虽然上面的代码演示了如何直接在Android应用和Places自动填充服务之间进行通信,但您不应该将您的Places API密钥存储在您的应用中。
因此,您应该构build一个存储您的API密钥并代理Places API服务的Web应用程序。 为了确保您的Android应用程序和代理Web服务之间的通信安全,您应该要求用户validation您的代理Web服务。 您的Android应用程序可以安全地存储用户凭据并将其传递到您的Web服务,或者用户可以通过Android WebViewlogin到您的Web应用程序。
对于后一种方法,您的Web应用程序应创build并返回一个用户身份validation令牌到您的Android应用程序,然后您的Android应用程序应随后将此令牌传递给您的代理Web服务。
在Google开发控制台中,您应该能够find“Places API”和“Places API for Android”
请务必使用“Android的Places API”
出于某种原因,“API for Android”隐藏在API列表中,但可以使用search进行访问。
我有同样的问题,我通过离开来解决它
接受来自这些HTTP引用者(网站)的请求(可选)
在浏览器键空白
我还是个新手,所以我不能发表评论,但为了说明Moe的回答,我解决了一些类似的Google Maps API有关URL查询的问题(针对使用Volley的方向),步骤如下:
- 获取Android API密钥(包括Google Maps Directions API)。
- 获取“服务器”API密钥(这似乎是通过使用“HTTP引用者”的关键限制创build的 – 实际上,它只是用于通过HTTP发布URL查询)。
- 将Android API密钥作为
meta-data
标记存储在AndroidManifest.xml
的application
标记中,其中android:name="com.google.android.maps.v2.API_KEY"
和android:value
作为密钥。 这用于直接与Maps API交互(减去URL查询)。 - 每当发出URL查询时,请使用服务器API密钥。
我不确定这是否也适用于Places API的URL查询,如果您只需要服务器API密钥,或者有更好的解决scheme,但是这对我有用。
我想它只是第一个键 – 不限于Android的。