Google maps Google地理编码API安装程序查找正确的ClientID和密码

Google maps Google地理编码API安装程序查找正确的ClientID和密码,google-maps,google-geocoder,google-geocoding-api,Google Maps,Google Geocoder,Google Geocoding Api,我正在构建一个java web应用程序,它需要上定义的Google地理编码服务。我的应用程序是所有设置和一切工作,我现在试图签署我的请求,以允许从API的其他功能,如额外的费率限制计费等 我遇到的问题是,我似乎无法获得与地理编码API一起工作的正确客户端Id和密钥。我使用了谷歌API控制台上API访问选项卡上id和密钥的每一个合理组合。为了测试我的凭证,我已经直接从googleat复制了PHP代码,以确保我的请求被正确签名。我看了一个关于这个主题的谷歌开发者视频(),它显示这是为一个谷歌商业帐户

我正在构建一个java web应用程序,它需要上定义的Google地理编码服务。我的应用程序是所有设置和一切工作,我现在试图签署我的请求,以允许从API的其他功能,如额外的费率限制计费等

我遇到的问题是,我似乎无法获得与地理编码API一起工作的正确客户端Id和密钥。我使用了谷歌API控制台上API访问选项卡上id和密钥的每一个合理组合。为了测试我的凭证,我已经直接从googleat复制了PHP代码,以确保我的请求被正确签名。我看了一个关于这个主题的谷歌开发者视频(),它显示这是为一个谷歌商业帐户做的,在阅读了谷歌的API文档后,你似乎没有一个商业帐户来使用地理编码服务,但是我似乎无法获得一个有效的客户ID和密钥来为我工作。有人知道在非商业帐户上使用此服务的正确设置吗?或者甚至有可能吗?(请记住,这是一个服务器到服务器的连接)

如果有人需要更多信息,请告诉我。如有任何建议,我将不胜感激


编辑:查看上面列出的使用限制,您会发现这意味着您可以在没有业务帐户的情况下使用地理编码API。。。。但是如何使用呢?

我浏览了文档,正如您正确地指出的,您不需要业务帐户来使用地理编码API。如果您有一个非商业帐户,那么您只需要传递API密钥。仅当您有业务帐户时,才需要客户端ID。密钥本身是唯一的,如下所述:

API密钥是使用控制台生成的唯一密钥。当应用程序需要调用在此项目中启用的API时,应用程序会将此密钥作为key=API\u key参数传递到所有API请求中。使用此密钥不需要任何用户操作或同意,不授予访问任何帐户信息的权限,也不用于授权

根据下面的链接,对于业务帐户,使用客户ID而不是密钥

如果您是Maps for Business客户,则需要使用客户端ID代替密钥。请注意,这两者不能一起使用。客户端ID类似于密钥,但有以下区别:

  • 使用客户端ID的业务应用程序地图可能有权访问其他功能或限制,如地图分析。您的客户端ID将由谷歌企业支持提供给您。您不需要使用API控制台

  • 加载Google Maps JavaScript API时,将使用客户机参数而不是键参数

我猜同样的原则也适用于地理编码API。如果您想要不属于非商业帐户的附加功能,则必须获得商业帐户

我运行了下面的代码,只使用Java中的密钥对我的请求进行签名,它工作得非常好

    public static String getAddress(String latitude, String longitude){
    String address = null;
    try {
        final String inputurl = "http://maps.googleapis.com/maps/api/geocode/xml?latlng="+ latitude + "," + longitude + "&sensor=true";
//          Sign the URL using key
        String url = getRequestURL(inputurl);
        url = "http://maps.googleapis.com" + url;

        final URL google = new URL(inputurl);
        final URLConnection geocode = google.openConnection();
        final BufferedReader in = new BufferedReader(new InputStreamReader(
                geocode.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            address += inputLine;
        }
        in.close();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return null;
}

public static String getRequestURL(final String inputurl) throws IOException,
InvalidKeyException, NoSuchAlgorithmException, URISyntaxException {
    // Convert the string to a URL so we can parse it
    final URL url = new URL(inputurl);

    final URLSigner signer = new URLSigner("*INSERT YOUR KEY HERE*");
    final String request = signer.signRequest(url.getPath(), url.getQuery());

    return request;
}