如何取回 Twitch API 不记名令牌

How to retrieve the Twitch API bearer token

我不确定如何总结这个问题,除了一些我曾经搜索过的最被动的攻击性或无能为力的文档(我已经看到并写下了我的公平分享!),尤其是来自一家子公司的表面上是财富 5 强公司

无论如何:作为一个有抱负的 Twitch API 用户,我想执行 Twitch API 资源(user/channel 资源等)的一般服务器端请求,我需要提供Authorization header.

中的不记名令牌

好的,你觉得很简单吗?哦,甜蜜的夏天 child,Twitch 文档中有关于 four different authorization flows 的非常详细的部分,您可以冒险尝试获得这个神秘而难以检索的令牌(这实际上就像任何其他 [=35 中的第一步) =])

这些流程中的每一个都有相当好的逐步枚举,以及您需要如何首先确保您注册了一个 twitch 应用程序,并且该应用程序的 Client-Id 和客户端 Secret 可用。

在那一步之后,最接近的是下载 Twitch CLI,调用 twitch token 命令,然后传入您的 Client-Id 和客户端密码以获得可以传递的过期访问令牌作为承载者,但如果:

  1. twitch CLI 无法安装在我的机器上?
  2. 我不想安装 twitch CLI?
  3. 我需要以编程方式生成一个新的访问令牌(就像 API 的全部要点???)而不 bash 编写 CLI 脚本?

tl;dr,这花了我太多时间,所以我与你分享,因为花了这么长时间太荒谬了:

POST https://id.twitch.tv/oauth2/token?grant_type=client_credentials

Headers "Content-Type":"application/x-www-form-urlencoded"

表格body:(在Insomnia或Postman中选择'form'选项)

client_id <your app's client id>
client_secret <your app's client secret>
redirect_uri <your app's redirect uri (localhost is fine!)>
code <your app's client secret (yes, again)

对我有用的帖子,返回了这个 200 OK 和 JSON 响应:

{
  "access_token": "<relevant access token>",
  "expires_in": 5046783,
  "token_type": "bearer"
}

虽然 Twitch 文档自由地共享许多其他端点,但出于某种原因我只能推测,它们没有明确共享端点并明确共享用于检索端点以生成 Twitch API 不记名令牌的端点。

幸运的是,他们 分享了他们的 Twitch CLI's code on Github,我们可以进一步调查。

在此代码库中,我们可以看到多个 url 分配给变量并在 cmd go 文件中的嵌套 if 语句中调用。

在回购和一些流畅的大脑键盘攻击之后,我得到了我正在寻找的结果。

我希望你觉得这很有用,请不要在你的公司写这样的文档!