java - Google 自定义搜索 API:已超出未经验证使用的每日限制。继续使用需要注册
问题描述
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 密钥。
解决方案
问题是我的 Java 代码,我认为我没有在我的代码中正确添加凭据。结果我的 GET 请求也出现了错误。
运行编辑后的 Google 示例会返回预期的 JSON 搜索结果:
curl -l GET 'https://www.googleapis.com/customsearch/v1?key=MY_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lectures'