当前位置: 首页 > 知识库问答 >
问题:

Android版Google Books API-未配置访问

俞学
2023-03-14

我正在使用谷歌图书API KEY for android通过我的android应用程序加载图书数据。但我收到下面列出的错误。

但是,-如果我从API CONSOLE中删除证书,则查询有效(例如,使所有应用程序都可以接受API KEY)。尽管我输入的{SHA1};{包名称}信息是正确的。-如果我将API KEY用于浏览器,则此工作原理。

因此,据我所知,我不能在httpclient方法中将密钥作为url的一部分发送。可能是我需要通过标题或其他方式发送。但我不知道怎么做。

有人能帮忙吗?

代码:

String link = "https://www.googleapis.com/books/v1/volumes?key=MY_KEY&q="+query+"&projection=full&langRestrict=en&maxResults=1";
HttpGet get = new HttpGet(link);
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection);
HttpClient httpclient = new  DefaultHttpClient(httpParameters);
HttpResponse response = httpclient.execute(get);
HttpEntity entity = response.getEntity();

查询:

https://www.googleapis.com/books/v1/volumes?key=MY_API_KEY&q=intitle:'The+Old+Man+And+The+Sea'+inauthor:'Ernest+Hemingway'&projection=full&langRestrict=en&maxResults=1

结果:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured"
   }
  ],
  "code": 403,
  "message": "Access Not Configured"
 }
}

共有3个答案

程凯定
2023-03-14

使用HttpGet可以获得与接受答案相同的结果:

String API_KEY = "..."; // Google Books API Public key
String ISBN = "...";
String bookSearchString = "https://www.googleapis.com/books/v1/volumes?q=isbn:" + ISBN;
HttpClient bookClient = new DefaultHttpClient();
try
{
    //get the data
    HttpGet bookGet = new HttpGet(bookSearchURL);
    bookGet.addHeader("key", API_KEY);
    HttpResponse bookResponse = bookClient.execute(bookGet);
    StatusLine bookSearchStatus = bookResponse.getStatusLine();
    if (bookSearchStatus.getStatusCode() == 200)
    {
        //we have a result
        HttpEntity bookEntity = bookResponse.getEntity();

        ...

    }
} catch (Exception e)
{
    e.printStackTrace();
}
钮边浩
2023-03-14

在报头中提供密钥与根本不提供密钥相同。检查开发人员api控制台,您将不会看到使用该api密钥的成功查询。总之,标头中的API密钥并不能解决问题。如果你不想遵循谷歌的规则,只需在没有按键的情况下进行查询。

单于高逸
2023-03-14

可能与之相关的人。。。我在标题中发送API密钥,它现在正在工作。。我不确定这是否是正确的方式,虽然。。。

String link = "https://www.googleapis.com/books/v1/volumes?q="+params;
            InputStream is = null;
            try 
            {
                int timeoutConnection = 10000;
                URL url = new URL(link);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                con.setConnectTimeout(timeoutConnection);
                con.setReadTimeout(timeoutConnection);
                con.setRequestProperty("key", "API_KEY");
                if(con.getResponseCode() != HttpURLConnection.HTTP_OK){
                    publishProgress("Error conneting.");
                }
                is=con.getInputStream();
            }
 类似资料:
  • 我在我的开发分支apk上做了什么: > 添加了清单权限 添加了帐单代码来使用我的sku进行购买 我可能漏掉了什么?提前感谢!

  • 我在两个不同的API项目上断断续续地收到以下错误。API项目已正常运行近一年,没有变化。当错误开始发生时,它会以持续几分钟的突发方式发生,然后再次开始正常运行。错误事件每小时发生几次,我们在12小时前的昨晚早些时候注意到错误发生。感谢任何帮助。 接口范围:www.googleapis.com/auth/userinfo.profile www.googleapis.com/auth/userinf

  • 问题内容: 我正在使用一个Android应用程序来录制视频,并允许用户使用YouTube数据API v3将其直接上传到YouTube。 我已经在Google的API控制台中设置了我的应用。在服务下,我启用了YouTube数据API v3。在API访问下,我有一个“已安装应用程序的客户端ID”部分(包括一个客户端ID和客户端密钥)和一个“简单API访问”部分->“ Android应用程序的密钥(带有

  • 我正在尝试使用谷歌API的v3从客户的公共日历中获取事件列表。我在API Explorer中输入了日历ID,得到了一个肯定的结果: 为了创建 API 密钥,我在 Google 开发者控制台中创建了一个项目,并创建了一个公共 API 访问密钥 (API 我看到的所有回复都表明,您需要确保Google Calendar API已打开,而且它确实已打开(默认情况下也是打开的)。我在这里错过了什么?

  • 但是我在构建APK时也遇到了同样的错误。官方文件似乎有误。如何在VS代码上创建apk?

  • 我正在尝试为基于spring的tomcat应用程序配置logback访问。在我的pom中添加了以下行。xml文件: 我还在pom文件的tomcat插件配置中添加了这个。 我已将资源文件放在以下位置:src/主/资源/日志回溯.xml src/主/资源/日志回溯访问.xml 但是,虽然日志.xml工作,但tomcat无法获取日志回溯访问.xml文件。如何使用我的tomcat6插件附加访问xml文件?