Google自定义搜索API拒绝了我的请求,说我已经超出了限制。他们的限制是每天100个请求,但我还没有成功完成任何请求,而我总共只提出了大约5个请求。
我正在创建一个Java应用程序,以使用Google CustomSearch API通过我的CustomSearch API密钥进行搜索。
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.customsearch.Customsearch;
import com.google.api.services.customsearch.model.Result;
public class SearchBuilder {
public SearchBuilder() {
search = new Customsearch.Builder(new NetHttpTransport(), new JacksonFactory(), null) .setApplicationName("MyApp").build();
}
public List<Result> search(String query) throws IOException {
return search(query,100);
}
}
我尝试刷新API密钥,以确保在API控制台上启用了它,但仍然没有运气。
使用我的API密钥运行此代码会导致以下异常:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"reason" : "dailyLimitExceededUnreg",
"extendedHelp" : "https://code.google.com/apis/console"
} ],
"message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
但是我认为代码不是问题所在,因为普通的GET请求和Java代码都返回相同的JSON消息,理由是超出了我的限制。
它说继续使用需要注册,但是我不确定这意味着什么-我已经注册了API密钥。
答案 0 :(得分:1)
问题是是我的Java代码,我认为我没有在代码中正确添加凭据。原来我也是在畸形我的GET请求。
运行编辑后的Google示例会返回预期的JSON搜索结果:
curl -l GET 'https://www.googleapis.com/customsearch/v1?key=MY_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lectures'
答案 1 :(得分:-1)
一个请求不必“成功”即可被计算到最大数量。在Google看来,这是一个成功的请求。您只是没有正确处理数据。注册可能是指您必须输入一些银行详细信息,以便他们可以向您收取所有下一个请求的费用。
对于您自己遇到的问题,没有更多的代码我真的帮不上忙。