【问题标题】:Google Places API always denies requestGoogle Places API 总是拒绝请求
【发布时间】:2015-11-19 12:26:28
【问题描述】:
j.setUrl("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyA712jyN6NY0VXSGf8zgXfXSRhq01O8RLY");

这是我的 json 网址和我的密钥。它总是给我 status request denied 。我尝试使用调试密钥库和新密钥库制作很多密钥,但没有任何效果。这是谷歌的示例网址。它对我不起作用。 如果您想提供有关新密钥的解决方案,请向我提供有关如何获取有效调试密钥的详细过程。请非常详细。 如果您想提供有关传感器参数的解决方案,它已经在那里。 如果你想要json解析器文件如下

    package com.json;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
public class JSONParser extends AsyncTask<Void, Void, JSONObject> {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    private String url;

    // constructor
    public JSONParser() {

    }

@Override
protected JSONObject doInBackground(Void... params) {
    // defaultHttpClient
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(getUrl());

    HttpResponse httpResponse = null;
    try {
        httpResponse = httpClient.execute(httpPost);
    } catch (ClientProtocolException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    HttpEntity httpEntity = httpResponse.getEntity();
    try {
        is = httpEntity.getContent();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    BufferedReader reader = null;
    try {
        reader = new BufferedReader(
                new InputStreamReader(is, "iso-8859-1"), 8);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    StringBuilder sb = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        is.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    json = sb.toString();

    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // return JSON String
    return jObj;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

}


编辑:我查看了我的 api 控制台的报告,它显示发出了请求,因为我看到请求我认为密钥不是无效的,因为它正确地引导到我的 api 控制台。如果我错了,请纠正我?


编辑 2 :所以我尝试了一切,现在创建了一个新的 ID,为我的调试密钥库获得了一个新的 api 密钥,使用 url 和 json 解析器类创建了一个全新的项目。我仍然收到请求被拒绝。有人可以帮我吗?

【问题讨论】:

  • 在你的 url 中尝试用 search 它为我的工作替换附近搜索并使用此链接获取调试密钥 stackoverflow.com/questions/5262695/…
  • 还是不行,我仍然收到请求被拒绝
  • 我已经获得了 sha1 证书,然后是密钥,但即使这样做了 5 次,我仍然会收到此错误
  • 您使用的密钥无效
  • 我已按照以下步骤获取密钥:- 1.) 获取 debug.keystore 文件的 sha1 证书 2.) 转到 apis 控制台并单击创建新的 android 密钥 3.) 输入sha1证书,加';'到它,然后添加包名称,在我的例子中是 com.json 4.)获取新密钥,复制它并在 url 中使用它。我错过了什么,还剩下什么?

标签: android android-emulator google-places-api


【解决方案1】:

Google Places API 使用 API 密钥来识别您的应用程序。 API 密钥通过 Google API 控制台进行管理。在开始使用 API 之前,您需要自己的 API 密钥。激活 Places API 并创建您的密钥。Click here to generate api key

Google Places API

试试看。一切顺利。

【讨论】:

  • 我无法访问第一个链接“单击此处生成您的 api 密钥”
  • 能否请您阅读有关问题的cmets,并根据那里提供的信息进行回答。我会很感激的
  • 提供您的邮件 ID 并创建您自己的 api 密钥
  • kj4493@gmail.com 我已经生成了 7 个密钥到现在都没有工作
  • 阅读 google places api 的完整文档。通过第二个链接。当然你会得到解决方案
【解决方案2】:

1)如何创建KeyStore

Project >> Export >> ExportAndroidApplication >> Next >> Create New Keystore (Remember Keystore Path) >> Fill All Detail >> ...etc

现在您的密钥库和 Apk 已创建。

2)如何获取证书指纹(MD5)

$ keytool -list -alias alias_name -keystore my-release-key.keystore

更多详情go here

现在你得到了像这样的指纹

证书指纹(MD5):94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98

3)如何获取 MapApiKey click here 并粘贴您的 MD5,然后您将获得 MapAPIKey。在您的应用程序中使用此密钥。

【讨论】:

  • 对不起先生,但这是与 maps api v1 一起使用的旧方法。现在映射 apiv2、v3 并放置 api,我们使用 sha1 证书并从 api 控制台获取密钥
【解决方案3】:

它终于起作用了,所以我所做的是

  • 从 api 控制台删除我的旧 api 项目。
  • 创建了一个新项目。
  • 只启动了 google places api 服务。
  • 点击试用链接
  • 我的浏览器使用它创建的默认键为我提供了正确的结果。
  • 从 url 字段中复制了密钥。
  • 在我的应用程序中使用它。有用。欢呼! :) 我没有创建新的 android 密钥。

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 2014-09-30
    • 2015-06-25
    • 2015-05-27
    • 2012-09-04
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多