Github API OAuth令牌验证

17
有没有办法验证我的 GitHub API 的 OAuth token?所谓的“token”指的是用户登录我的网站后获取的 token。我使用 cookie 将其存储在客户端计算机上,但仅检查是否存在 token 是不足够的:我需要实际检查该 token 是否有效。目前,这需要我请求信息并捕获错误。然而,这真的会影响到我的速率和负载速度,因为 GitHub API 非常慢。我正在使用 Node.js、express 和 octonode 库。我尝试查看 GitHub API 文档,但它们非常简洁。也许这与 OAuth 有关。

8
这个端点是否符合您的需求?如果令牌存在并与您的 OAuth 应用程序相关联,此端点将返回 HTTP 200 响应,且正文包含令牌详细信息。否则,此端点将返回 HTTP 404 响应。 - jasonrudolph
你好,我尝试了你说的方法,但每次都得到404错误。你能展示一下使用curl进行请求的例子吗?这是我的操作: curl -u client_id:client_secret https://github.com/applications/client_id/tokens/token_to_check - 64_
1
没关系,我自己解决了。只是忘记在前面加上 api.github.com。这就是让服务器发送404的唯一问题,哈哈,你无法判断它是真正的404还是你的令牌无效。感谢你的帮助 :) - 64_
3个回答

13

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

curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com/users/codertocat -I

HTTP/1.1 200 OK
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user

2
非常好,有效的令牌还可以通过x-ratelimit-limit: 5000响应头进行验证(无效的令牌限制要低得多,如60)。 - mvorisek

8
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 to Fetch
这是根据OP提问的有益评论编写的。

2
更改令牌的终端点已更改:请参见https://docs.github.com/en/enterprise-server@3.0/rest/reference/apps#check-a-token - Jonas
有人知道用于验证 Stackoverflow OAuth Token 的 API 资源吗? - Philippe Simo

6
curl -H "Authorization: <TOKEN>" https://api.github.com/

或者

curl https://api.github.com/ -u <USERNAME>:<TOKEN>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接