【问题标题】:Retrofit, IGDB Api - How to correctly pass Api Key?Retrofit, IGDB Api - 如何正确传递 Api Key?
【发布时间】:2019-01-16 14:49:34
【问题描述】:

我正在尝试使用改造对互联网游戏数据库 (IGDB) Api 进行查询。以前我在使用其他Api时,比如电影数据库(TMDB),api-keys总是作为查询传入的,所以界面看起来是这样的。

@GET("/3/movie/popular")
Call<MovieResults> getPopularMovie(
        @Query("api_key") String apiKey,
        @Query("language") String language,
        @Query("page") int page
);

但是对于 IGDB,我认为他们希望我将 api-key 作为标头传递(我不是 100% 确定,如果我错了,请纠正我)。我以前从未通过标头传递 api-key,所以猜测一下,我的界面如下所示。

@Headers({
        "Accept: application/json",
        "user-key: b5bd50####################8b2"
})
@GET("/games")
Call<List<Game>> getGame();

问题是,当我拨打电话时,虽然电话以 onResponse 结束,但 response.body 始终为空。

所以,我在调试模式下运行代码,我发现了这条消息:

response = Response{protocol=http/1.1, code=401, message=Unauthorized, url=http://v2000.igdb.com/games/}

我不知道这是什么意思,但我猜它没有识别授权的 api-key?

另一个有趣的异常是,我传入的基本 url 是:

"https://api-2445582011268.apicast.io/"

我不知道结果如何:

http://v2000.igdb.com/

如果有人对 IGDB 有任何经验,请给我一些帮助,将不胜感激。

【问题讨论】:

  • 您通过标头传递令牌的方式对我来说看起来不错。您是否尝试过使用 Postman 或 curl 发出请求?看看这是否成功会很有趣。
  • 显然是我的基本网址中的错误。感谢您推荐 Postman,不知道有这样的应用程序。

标签: java retrofit api-key


【解决方案1】:

我已将此 A​​PI 与 JAVA 一起使用,我可以确认您应该在标头中发送 API 密钥,因此您所做的看起来是正确的。

你得到的base url也是错误的,尝试使用https://api-endpoint.igdb.com/,这是推荐的url。

我也可以推荐你尝试使用Postman的api,它是一个很好的测试工具。

如果你使用 java,你可能想试试他们的java wrapper

【讨论】:

  • 感谢您指出我的 base-url 错误。我从他们的现场测试视线中复制了一个,显然这是不正确的。并感谢您推荐 Postman,这非常有用。关于 Java Wrapper,我不使用该库的原因是,我正在编写这个应用程序作为改造练习,所以我非常喜欢坚持改造。谢谢!
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2021-11-22
  • 1970-01-01
  • 2018-05-30
  • 2021-10-15
  • 1970-01-01
相关资源
最近更新 更多