跳至主要内容

刷新用户访问令牌

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

关于过期用户访问令牌

注意: 过期用户访问令牌目前是可选功能,可能会发生变化。有关更多信息,请参阅“GitHub Apps 的过期用户到服务器访问令牌”。

为了强制定期令牌轮换并减少被盗令牌的影响,您可以配置您的 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字符串刷新令牌。如果您禁用了用户访问令牌的过期,则此参数将被省略。令牌以 ghr_ 开头。
    refresh_token_expires_in整数refresh_token 过期前剩余的秒数。如果您禁用了用户访问令牌的过期,则此参数将被省略。该值始终为 15897600(6 个月)。
    scope字符串令牌具有的范围。此值始终为空字符串。与传统的 OAuth 令牌不同,用户访问令牌仅限于您的应用程序和用户都拥有的权限。
    token_type字符串令牌类型。该值始终为 bearer