【发布时间】:2014-08-22 00:07:32
【问题描述】:
每当我将我的 Google Play 服务 API 密钥连同我的 Google 路线请求一起包含在下面的代码中时:
private String makeDirectionsURL(double originLat, double originLong, double destLat, double destLong)
{
StringBuilder url = new StringBuilder();
//first part of url//
url.append("https://maps.googleapis.com/maps/api/directions/json?");
//start adding parameters//
//origin coordinates
url.append("origin="+originLat+","+originLong);
//destiniation coordinates
url.append("&destination=");
url.append(destLat+","+destLong);
//api key
url.append("&key=");
url.append(getResources().getString(R.string.google_api_key));
//NOTE: for some reason, the request suceeds when leaving out the api key
return url.toString();
}
当我在请求中包含 api 密钥作为参数时,json 响应显示我的请求已被拒绝。回复如下:
{ "error_message" : "此 IP、站点或移动应用程序无权使用此 API 密钥。", “路线”:[], “状态”:“REQUEST_DENIED” }
但同样的 api 密钥适用于我的 google 地图视图 - 我的 api 控制台注册了地图视图配额限制的访问。更奇怪的是,当我在 Directions 请求中省略 key 参数时,我得到了一个有效的 JSON 响应。
我觉得我必须为 Google 路线服务生成另一个不同的 api 密钥 - 但我不知道该怎么做。这里的文档: https://developers.google.com/maps/documentation/directions/#api_key
说要访问控制台并激活 Directions API 服务 - 我做到了。 然后它说我的 api 密钥“将在 API 访问页面的简单 API 访问部分可用。路线 API 应用程序使用服务器应用程序的密钥。”现在是我感到困惑的地方 - 如果我从移动设备访问,我如何使用服务器应用程序的密钥 - 我假设这适用于任何希望使用该服务的网页 - 但是我该怎么做一个 android应用程序。正如我所说,我已经尝试将我的简单 API 访问密钥用于 Android 应用程序,我知道它可以工作,但是当我将相同的密钥传递给 Google 方向时 - 它神秘地不起作用......
非常感谢任何帮助、模糊的指导或阅读链接。
PS:如果我无法解决这个问题 - 我是否可以在没有 api 密钥的情况下继续发送请求?
【问题讨论】:
-
我还想指出,错误消息表明 API 密钥被识别为 API 密钥 - 它只是没有被识别为链接到我的应用程序。我通过更改删除部分我的 api 密钥字符串资源和 响应时间更改为说它不是有效的 api 密钥来测试这一点。
-
这里对此问题的回应:stackoverflow.com/questions/47799745/…
标签: android google-maps-android-api-2