如何从GitHub OAuth访问令牌获取范围信息以执行增量授权

s3fp2yjn  于 2023-10-15  发布在  Git
关注(0)|答案(1)|浏览(173)

当使用GitHub OAuth API执行授权时,用户会被重定向回具有临时代码参数的特定应用程序
临时代码参数可以交换为访问令牌,向https://github.com/login/oauth/access_token发送POST请求,如API reference中所述
该端点的响应包含访问令牌以及其中的scopes,也就是说,考虑以下流程:

  • 用户使用基本范围授权GitHub OAuth
  • GitHub OAuth返回临时代码
  • 检索访问令牌的临时代码
  • (增量授权情况)用户想要从我的产品中访问一个需要存储库作用域的功能,那么应用程序需要向用户发出信号,表明需要使用先前授予的作用域和其他作用域再次执行授权

根据最后一步,为了向用户发出再次需要授权的信号,需要在已经授予并包含在访问令牌中的范围与现在需要的范围之间执行差异
是否可以访问其他API路由以获取有关该用户访问令牌的更多信息?作为另一个参考,OAuth规范将其称为“令牌内省端点”:https://datatracker.ietf.org/doc/html/rfc7662

gtlvzcf8

gtlvzcf81#

在GitHub的OAuth API中,没有RFC 7662中指定的内置令牌内省端点来直接获取有关访问令牌的详细信息。
但是,您可以通过访问www.example.com端点来收集一些信息https://api.github.com/user。当您使用Authorization标头中的访问令牌进行此API调用时,响应将包含X-OAuth-Scopes标头。此标头包含一个逗号分隔的令牌已被授予的作用域列表。要找到应用程序的授权作用域和必需作用域之间的差异,您必须在两个集合之间进行手动比较(diff)。

相关问题