[英]Why is my api key not accepted by the Google Directions (Android) request?
每当我将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密钥。”,“routes”:[],“status”:“REQUEST_DENIED”}
然而,相同的api密钥适用于我的谷歌地图视图 - 我的api控制台注册了地图视图配额限制的访问。 甚至更奇怪,当我在Directions请求中省略key参数时,我得到一个有效的JSON响应。
我有一种感觉,我必须为Google Directions服务生成另一个不同的api密钥 - 但我不知道如何。 此处的文档: https : //developers.google.com/maps/documentation/directions/#api_key
说访问控制台并激活Directions API服务 - 我做到了。 然后它说我的api密钥“将在API访问页面的Simple API访问部分提供。方向API应用程序使用密钥用于服务器应用程序。” 现在是我困惑的地方 - 如果我从移动设备访问我如何使用服务器应用程序的密钥 - 我假设这是任何希望使用该服务的网页 - 但我该怎么做的android应用程序。 正如我所说的,我已经尝试使用我的简单API访问密钥用于Android应用程序,我知道它可以工作,但是当我将相同的密钥传递给Google方向时 - 它神秘地不起作用......
任何帮助,含糊的指导或阅读链接都将非常感激。
PS:如果我无法解决这个问题 - 我是否可以继续发送带有api密钥的请求?
我认为问题是因为你试图传递一个server key
,它直接绑定到你服务器的IP地址,当你应该传递一个android app key
。
在您的Google API控制台中,导航到API和Auth 。 从这里,您可以创建一个新的公共API密钥。
出现提示时,选择Android Application
您需要输入设备的SHA1证书指纹
这来自用于签署apk的密钥库。 在调试中运行应用程序时,您很可能正在使用IDE的调试密钥库。 谷歌对如何获取这些信息有一个很好的写作 。
发布应用程序时,您需要使用自己的密钥进行签名。 您需要将API密钥编辑为新的密钥库SHA1指纹或创建新的API密钥。
此外,根据Google的说法,您应该使用密钥。
所有Directions API应用程序都应使用API密钥。 在您的请求中包含密钥:
- 允许您监视API中应用程序的API使用情况
- 安慰。 启用每个密钥而不是每个IP地址配额限制。
- 确保Google可以在必要时就您的申请与您联系。
虽然我无法评论他们如何严格执行此操作,但我强烈建议您这样做以避免任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.