我开始为 iOS 应用程序使用 IGDB API。几天前,IGDB 推出了 V4,现在需要通过 oAuth2 向 Twitch 授权才能接收应用访问令牌。
由于我的后端知识很差(我实际上是昨天开始学习 NGINX),我设法设置了一个 NGINX Web 服务器,它代理对 IGDB API 的请求并将应用程序访问令牌注入 HTTP 标头。这目前工作正常。
我的 proxy.conf 包含在 nginx.conf 中,如下所示:
server {
listen 443 ssl;
server_name myhost.com;
#SSL Config cut out
...
location / {
proxy_pass https://api.igdb.com/v4/games;
proxy_ssl_server_name on;
proxy_set_header Client-ID "MY TWITCH APP CLIENT ID";
proxy_set_header Authorization "Bearer THE_APP_ACCESS_TOKEN";
}
}
但是THE_APP_ACCESS_TOKEN
是我手动请求的。出于测试目的,这很好,但是它将在大约 60 天后过期(根据 Twitch Dev Docs)。我现在想知道如何动态请求访问令牌(并以某种方式存储它?),在过期时刷新它并将其注入proxy.conf。
在研究时,我偶然发现了 HTTP Auth Request 模块与 NGINX JavaScript 模块(https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/)的结合。
现在我想知道在代理请求之前通过Auth请求模块触发令牌请求是否是一种合理的方法,使用JavaScript模块解析JSON响应并将响应中包含的应用程序访问令牌作为变量注入到HTTP标头中代理。虽然这在理论上对我来说听起来不错,但我几乎不知道如何实现它。此外,这种方法还不包括在令牌过期后立即存储和更新令牌。
您对我有一些提示如何解决这个问题,或者还有其他解决方案吗?