android - 通过 Google 的 REST API 使用 Retrofit 进行 Google 的自定义搜索

标签 android rest google-api retrofit

我制作了一个具有搜索功能的应用,该功能设置为从我创建的自定义 Google 搜索中进行搜索(使用他们的自定义搜索服务)。它没有 Java 库,因此我使用 Retrofit 来请求 REST API ( https://developers.google.com/custom-search/json-api/v1/using_rest ),但是我遇到了问题:

Retrofit 工作正常,但请求始终返回 400 错误,并包含以下信息: "domain": "usageLimits", "reason": "keyInvalid"

我在请求中使用的 API key 是 Google 开发控制台中我的项目的 Android 应用程序 key 。但我认为这不起作用,因为 Retrofit 不会让 Google 知道我正在从我的应用程序发送请求?

对于这种情况有哪些可能的解决方法?

谢谢。

编辑:我已确认我的 APK 已使用正确的 key 进行签名,并且我检查了用于生成 apikey 的 SHA1。我已经生成了大约 3 或 4 次新的 api key ,看看是否可以解决问题。

编辑2:

我成功了!

您不创建 Android API key (它不适用于此),而是创建浏览器 API key ,在其中将允许的引用者设置为全部(可能存在危险)。

您可以使用该 API key 来通过 Retrofit 进行请求。我觉得谷歌应该注意到这一点:毫无疑问,很多人会认为Android应用程序? -> Android API key - 但这只是 Google 为 API 制作了库时的情况。

最佳答案

听起来您只需将 key 作为查询参数传递到休息界面即可。

例如,如果您想执行下面的 GET 命令

获取 https://www.googleapis.com/customsearch/v1?key=INSERT_YOUR_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lectures

然后你的界面将像这样声明

public interface RestApi {
    GET ("/customsearch/v1")
    Response customSearch(@Query("key") String key, @Query("cx") String cx, @Query("q") String query);
}

然后你可以像这样执行调用

RestAdapter restAdapter = new RestAdapter.Builder()
  .setEndpoint("https://www.googleapis.com")
  .build();
RestApi restApi = restAdapter.create(RestApi.class)
restApi.customSearch("INSERT_YOUR_API_KEY", "017576662512468239146:omuauf_lfve", "lectures");

现在,请不要忘记将 INSERT_YOUR_API_KEY 替换为您从 Google Dev Console 生成的 key 。

关于android - 通过 Google 的 REST API 使用 Retrofit 进行 Google 的自定义搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933875/

相关文章:

google-app-engine - 为什么 Google Storage API 不能与 Amazon SDK v3 一起使用?

android - java.lang.NoClassDefFoundError : Failed resolution of: Landroid/support/v4/util/ArrayMap

android - 在 Android 应用程序中重新启动后尝试打开文件夹时出现权限错误

c# - NancyFx 自托管休息服务无法处理并行查询

javascript - 为什么我在express应用程序中出现 ' cannot GET '页面?

php - 如何检查 Google 客户端 API key 是否对 Google PHP API 库有效?

google-api - Google 网上论坛 API - getUsers() 您无权查看群组 : 的成员列表

android - 跨平台移动聊天

android - xxhdpi 图形占用太多空间

Angular 4动态填充查询参数