尝试在Android上访问Google知识图API时出错
我一直在尝试使用Google Knowledge Graph API,这似乎是一个顽固的API,因为我找不到任何教程,Google找到的唯一教程似乎根本不起作用,我创建了一个API密钥,启用了Google Knowledge API,但现在我遇到了这个错误尝试在Android上访问Google知识图API时出错,android,api,freebase,Android,Api,Freebase,我一直在尝试使用Google Knowledge Graph API,这似乎是一个顽固的API,因为我找不到任何教程,Google找到的唯一教程似乎根本不起作用,我创建了一个API密钥,启用了Google Knowledge API,但现在我遇到了这个错误 ` com.google.api.client.http.HttpResponseException: 403 Forbidden ﹕ { "error": { "code": 403, "message": "Requests from
` com.google.api.client.http.HttpResponseException: 403 Forbidden
﹕ {
"error": {
"code": 403,
"message": "Requests from this Android client application \u003cempty\u003e are blocked.",
[
{
"message": "Requests from this Android client application \u003cempty\u003e are blocked.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}`
com.google.api.client.http.HttpResponseException: 400 Bad Request
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"errors": [
{
"message": "API key not valid. Please pass a valid API key.",
"domain": "global",
"reason": "badRequest"
}
],
"status": "INVALID_ARGUMENT"
}
}
我正在使用的代码
HttpTransport httpTransport = new NetHttpTransport();
HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
JSONParser parser = new JSONParser();
GenericUrl url = new GenericUrl("https://kgsearch.googleapis.com/v1/entities:search");
url.put("query", "Taylor Swift");
url.put("limit", "10");
url.put("indent", "true");
url.put("key",API_KEY);
有人知道怎么解决这个问题吗?还有一件事,当我像这样直接使用API键url.put(“key”,API\u key)
时,当我从values
文件像这样加载API键url.put(“key”,R.string.API\u key)
时,它给了我这个错误
` com.google.api.client.http.HttpResponseException: 403 Forbidden
﹕ {
"error": {
"code": 403,
"message": "Requests from this Android client application \u003cempty\u003e are blocked.",
[
{
"message": "Requests from this Android client application \u003cempty\u003e are blocked.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}`
com.google.api.client.http.HttpResponseException: 400 Bad Request
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"errors": [
{
"message": "API key not valid. Please pass a valid API key.",
"domain": "global",
"reason": "badRequest"
}
],
"status": "INVALID_ARGUMENT"
}
}
我已经尝试了我所知道的一切,但没有任何帮助,因为其他谷歌API对我有用,但有了Graph API,我似乎需要几周的时间才能完成这项工作。你的第二个问题让我分心。
R.string.API_KEY
的值是编译时生成的Android资源索引值,而不是您的字符串。第一部分-如何生成API密钥。你是如何运行你的测试的。我感觉到以下说明中缺少了一个或多个内容:比如包名@MorrisonChang那么插入api的正确方法是什么?通过资源字符串还是像另一个示例中那样直接将其放在那里?首先,我通过谷歌控制台中的终端
am从我的机器上获取sha1指纹
,启用所有api
am使用,然后导航到凭证,在那里我创建了一个android密钥
,添加我的包名,比如com.me.myProject
和我的sha1指纹
,然后点击create
按钮我注意到的是我的API键
是可以的,当我从谷歌控制台禁用knowledge graph API
时,我会收到这个错误消息“Project尚未激活kgsearch.googleapis.com API。请为project启用API
,所以现在我不知道问题出在哪里,更糟糕的是谷歌提供的代码。运气好吗?我面临着同样的问题!需要帮助它对我有用。在创建API密钥时,我正在API Manager-Credentials下创建浏览器密钥,而不是Android密钥。出于某种奇怪的原因,你的第二个问题会分散你的注意力。R.string.API_KEY
的值是编译时生成的Android资源索引值,而不是您的字符串。第一部分-如何生成API密钥。你是如何运行你的测试的。我感觉到以下说明中缺少了一个或多个内容:比如包名@MorrisonChang那么插入api的正确方法是什么?通过资源字符串还是像另一个示例中那样直接将其放在那里?首先,我通过谷歌控制台中的终端
am从我的机器上获取sha1指纹
,启用所有api
am使用,然后导航到凭证,在那里我创建了一个android密钥
,添加我的包名,比如com.me.myProject
和我的sha1指纹
,然后点击create
按钮我注意到的是我的API键
是可以的,当我从谷歌控制台禁用knowledge graph API
时,我会收到这个错误消息“Project尚未激活kgsearch.googleapis.com API。请为project启用API
,所以现在我不知道问题出在哪里,更糟糕的是谷歌提供的代码。运气好吗?我面临着同样的问题!需要帮助它对我有用。在创建API密钥时,我正在API Manager-Credentials下创建浏览器密钥,而不是Android密钥。出于某种奇怪的原因,它正在发挥作用