Github API OAuth令牌验证

Hex*_*der 6 oauth github node.js github-api express

有什么方法可以验证我的github API的OAuth令牌吗?“令牌”是指用户登录到我的网站后得到的令牌。我使用cookie将其存储在客户端计算机上,但是仅检查是否有令牌是不够的:我需要实际检查令牌是否有效。当前,这需要我提出信息请求,然后捕获错误。但是,这确实损害了我的速度,也损害了我的加载速度,因为github API 太少了 ……我正在使用Node.js,express和octonode库。

我尝试查看github API文档,但是它们很小,有点老套。我不确定这可能与OAuth有关。

提前致谢。

Vic*_*rov 13

检查标头以查看您拥有哪些 OAuth 范围以及 API 操作接受哪些内容:

curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com/users/codertocat -I
Run Code Online (Sandbox Code Playgroud)
HTTP/1.1 200 OK
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
Run Code Online (Sandbox Code Playgroud)

  • 很好,有效的令牌也可以通过`x-ratelimit-limit: 5000`响应头来验证(无效令牌的限制要低得多,比如 60) (2认同)

小智 5

curl -H "Authorization: <TOKEN>" https://api.github.com/
Run Code Online (Sandbox Code Playgroud)

或者

curl https://api.github.com/ -u <USERNAME>:<TOKEN>
Run Code Online (Sandbox Code Playgroud)


Oct*_*aLo 5

来自Github API 文档的授权

OAuth 应用程序可以使用特殊的 API 方法来检查 OAuth 令牌的有效性,而不会违反登录尝试失败的正常速率限制。

身份验证与此特定端点的工作方式不同。访问时必须使用基本身份验证,其中用户名是 OAuth 应用程序 client_id,密码是其 client_secret。无效的令牌将返回 404 NOT FOUND。

你可以用 curl 做到这一点:

curl -u client_id:client_secret https://api.github.com/applications/:client_id/tokens/:token

或者,如果使用 fetch,请使用Curl 来 Fetch

这是根据对 OP 问题的有用评论汇编而成的。

  • 用于更改令牌的端点已更改:请参阅https://docs.github.com/en/enterprise-server@3.0/rest/reference/apps#check-a-token (2认同)