为什么我的api密钥不被Google Directions(Android)请求接受?

时间:2014-08-22 00:07:33

标签: android google-maps-android-api-2

每当我将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密钥适用于我的谷歌地图视图 - 我的api控制台注册了地图视图配额限制的访问权限。甚至更奇怪,当我在Directions请求中省略key参数时,我得到一个有效的JSON响应。

我觉得我必须为Google Directions服务生成另一个不同的api密钥 - 但我不确定如何。这里的文档:  https://developers.google.com/maps/documentation/directions/#api_key

说访问控制台并激活Directions API服务 - 我做到了。 然后它说我的api密钥"将在API Access页面的Simple API Access部分中提供。方向API应用程序使用Key for servers apps。"现在是我感到困惑的地方 - 如果我从移动设备访问,我如何使用服务器应用程序的密钥 - 我假设这是针对任何希望使用该服务的网页 - 但我该怎么办?为Android应用程序做。正如我所说的,我已经尝试使用我的简单API访问密钥用于Android应用程序,我知道它可行,但当我将相同的密钥传递给Google方向时 - 它神秘地不起作用......

任何帮助,模糊的指导或阅读的链接都将非常感激。

PS:如果我无法解决这个问题 - 我是否可以继续发送没有api密钥的请求?

1 个答案:

答案 0 :(得分:0)

我认为问题是因为您尝试传递与您服务器的IP地址直接相关的server key,而您应该传递android app key

在您的Google API控制台中,导航至 API和验证。从这里,您可以创建一个新的公共API密钥。

Create Android Key

出现提示时,选择 Android应用程序 enter image description here

您需要输入设备的 SHA1证书指纹

这来自用于签署apk的密钥库。在调试中运行应用程序时,您很可能正在使用IDE的调试密钥库。关于如何获取此信息,Google有一个很好的write up

发布应用时,您需要使用自己的密钥进行签名。您需要编辑新密钥库SHA1指纹的API密钥或创建新的API密钥。

此外,根据Google,您应该使用密钥。

  

所有路线API应用程序都应使用API​​密钥。包括一把钥匙   在您的请求中:

     
      
  • 允许您在API中监控应用程序的API使用情况
  •   
  • 控制台。启用每个密钥而不是每个IP地址配额限制。
  •   
  • 确保Google可以在必要时就您的申请与您联系。
  •   

虽然我无法评论他们如何严格执行此操作,但我强烈建议您这样做以避免任何问题。