跳至主要内容

刷新用户访问令牌

为了强制执行定期令牌轮换并减少受损令牌的影响,您可以将 GitHub 应用配置为使用会过期的用户访问令牌。

关于会过期的用户访问令牌

注意

目前,会过期的用户访问令牌是一个可选功能,并且可能会发生更改。 有关更多信息,请参阅“GitHub 应用的过期用户到服务器访问令牌”。

为了强制执行定期令牌轮换并减少受损令牌的影响,您可以配置您的 GitHub App 使用即将过期的用户访问令牌。如果您的应用使用即将过期的用户访问令牌,则在生成用户访问令牌时,您将收到一个刷新令牌。用户访问令牌将在八小时后过期,刷新令牌将在六个月后过期。更多信息,请参阅“为 GitHub App 生成用户访问令牌”。

您可以使用刷新令牌生成新的用户访问令牌和新的刷新令牌。一旦您使用刷新令牌,该刷新令牌和旧的用户访问令牌将不再有效。

如果您的刷新令牌在您使用之前过期,您可以通过引导用户完成 Web 应用程序流程或设备流程来重新生成用户访问令牌和刷新令牌。更多信息,请参阅“为 GitHub App 生成用户访问令牌”。

配置您的应用以使用即将过期的用户访问令牌

创建应用时,除非您选择退出,否则会启用用户访问令牌的过期。更多信息,请参阅“注册 GitHub App”。您也可以在应用创建后配置此设置。

  1. 在 GitHub 上任何页面的右上角,点击您的个人资料照片。

  2. 导航到您的帐户设置。

    • 对于个人帐户拥有的应用,点击设置
    • 对于组织拥有的应用
      1. 点击您的组织
      2. 在组织的右侧,点击设置
  3. 在左侧边栏中,点击 开发者设置

  4. 在左侧边栏中,点击GitHub Apps

  5. 在您要修改的 GitHub App 旁边,点击编辑

  6. 在 GitHub Apps 设置侧边栏中,点击可选功能

  7. 在“用户到服务器令牌过期”旁边,点击启用禁用。此设置可能需要几秒钟才能应用。

    GitHub 建议您启用此功能以提高安全性。

如果您在已经生成用户访问令牌后启用了用户访问令牌过期,则先前生成的访问令牌不会过期。您可以使用DELETE /applications/CLIENT_ID/token端点删除这些令牌。更多信息,请参阅“OAuth 授权的 REST API 端点”。

使用刷新令牌刷新用户访问令牌

  1. 向此 URL 发出POST请求,并附带以下查询参数:https://github.com/login/oauth/access_token

    查询参数类型描述
    client_id字符串必需。您的 GitHub App 的客户端 ID。客户端 ID 与应用 ID 不同。您可以在应用的设置页面上找到客户端 ID。
    client_secret字符串必需,除非用户访问令牌是使用设备流程生成的。您的 GitHub App 的客户端密钥。
    grant_type字符串必需。值必须为“refresh_token”。
    refresh_token字符串必需。您在生成用户访问令牌时收到的刷新令牌。
  2. GitHub 将返回包含以下参数的响应

    响应参数类型描述
    access_token字符串用户访问令牌。令牌以ghu_开头。
    expires_in整数access_token过期前的秒数。如果您禁用了用户访问令牌的过期,则此参数将被省略。该值将始终为28800(8 小时)。
    refresh_token字符串refresh_token。
    refresh_token_expires_in整数refresh_token过期前的秒数。如果您禁用了用户访问令牌的过期,则此参数将被省略。该值将始终为15897600(6 个月)。
    scope字符串令牌具有的作用域。此值将始终为空字符串。与传统的 OAuth 令牌不同,用户访问令牌仅限于您的应用和用户都具有的权限。
    token_type字符串令牌的类型。值将始终为bearer