Retrofit, IGDB Api - 如何正确传递 Api Key?

Retrofit, IGDB Api - How to correctly pass Api Key?

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

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

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

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

问题是,当我进行调用时,虽然调用在 onResponse 中结束,但 response.body 始终为空。

因此,我 运行 代码处于 de-bug 模式,我发现了这条消息:

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 的经验,请给我一些帮助,将不胜感激。

我已经将此 api 与 JAVA 一起使用,我可以确认您应该在 header 中发送 API 密钥,所以您所做的看起来是是正确的。

你得到的基数url也不对,用https://api-endpoint.igdb.com/试试,推荐url.

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

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