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'

请求不必"成功"即可计入限制。在谷歌眼中,这是一个"成功",因为它是一个请求。您只是没有正确处理数据。注册可能是指您必须输入一些银行详细信息,以便他们可以向您收取所有下一个请求的费用。

至于你自己遇到的问题,如果没有更多的代码,我真的帮不上忙。

相关内容

最新更新