我正在开发一款Android应用,它使用Places API检索信息并将其显示在地图上。检索到地点的初始请求失败,并显示来自HTTP请求的ACCESS_DENIED状态消息。下面是我用来生成请求的代码:
try {
HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
HttpRequest request = httpRequestFactory
.buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
request.getUrl().put("key", API_KEY);
request.getUrl().put("location", _latitude + "," + _longitude);
request.getUrl().put("radius", _radius); // in meters
request.getUrl().put("sensor", "false");
if(types != null)
request.getUrl().put("types", types);
PlacesList list = request.execute().parseAs(PlacesList.class);
// Check log cat for places response status
Log.d("Places Status", "" + list.status);
return list;
在另一篇Stackoverflow帖子中,有人建议海报尝试以下方法来测试他们的密钥:
在此处转到api控制台,然后转到“服务”。单击活动服务 选项卡并验证“Places API”是否已启用。点击? “尝试”链接 在它的旁边。它应该使用您的密钥创建一个正确的URL 工作。比较您针对此URL尝试的链接 差异。
我按照这些说明操作。根据我点击时收到以下结果的事实? “尝试”链接我怀疑API Key独立于代码的根本错误...否则我会认为我会获得成功而不是REQUEST_DENIED:
{
"html_attributions" : [],
"results" : [],
"status" : "REQUEST_DENIED"
}
我通过输入我的调试证书的SHA1获得了我的密钥(我使用Keytool获得了所有适当的参数...例如,androiddebugkey .... debug.keystore)后跟一个“;”和应用程序的包名称。
不确定问题是什么......我确信它很简单,但我没有看到它而且我被卡住了。想法?
答案 0 :(得分:0)
我从未收到对此帖子的回复,所以最终我通过在新项目名称下创建一个全新的密钥解决了这个问题,我至少能够从Google检索Places。我仍然遇到问题填充地图但可能是代码问题。
我注意到我使用的密钥给了我ACCESS DENIED结果的标题为:“Android应用程序密钥(带证书)”并且它在实际密钥下面列出了一个标签“Android apps:” 。键值是SHA1值“;”然后是包名称。我在最终工作的新项目名称(Places API)下创建的密钥具有以下标题:“浏览器应用程序的密钥(带有引用者)”,它的标签为“Referers:”,值为“Any referer allowed”
所以这两个键肯定有所不同。当我生成密钥时,我不确定我做了哪些不同的事情。我想了解我为生成这两种“不同”类型的键所做的工作,以便我和其他人不会重复我的“错误”。
Google文档中有很多关于创建密钥的参考资料。关于密钥问题有很多帖子的事实告诉我,Google文档不是很清楚,否则在这个主题上不会存在很多问题。