关于过期用户访问令牌
注意: 过期用户访问令牌目前是可选功能,可能会发生变化。有关更多信息,请参阅“GitHub Apps 的过期用户到服务器访问令牌”。
为了强制定期令牌轮换并减少被盗令牌的影响,您可以配置您的 GitHub App 以使用过期的用户访问令牌。如果您的应用程序使用过期的用户访问令牌,那么您将在生成用户访问令牌时收到一个刷新令牌。用户访问令牌在八小时后过期,刷新令牌在六个月后过期。有关更多信息,请参阅“为 GitHub App 生成用户访问令牌”。
您可以使用刷新令牌生成新的用户访问令牌和新的刷新令牌。使用刷新令牌后,该刷新令牌和旧的用户访问令牌将不再有效。
如果您的刷新令牌在您使用之前过期,您可以通过将用户发送到 Web 应用程序流程或设备流程来重新生成用户访问令牌和刷新令牌。有关更多信息,请参阅“为 GitHub App 生成用户访问令牌”。
配置您的应用程序以使用过期的用户访问令牌
创建应用程序时,除非您选择退出,否则会启用用户访问令牌的过期。有关更多信息,请参阅“注册 GitHub App”。您也可以在应用程序创建后配置此设置。
-
在 GitHub 上任何页面的右上角,单击您的个人资料照片。
-
导航到您的帐户设置。
- 对于个人帐户拥有的应用程序,单击“设置”。
- 对于组织拥有的应用程序
- 点击您的组织。
- 在组织的右侧,点击设置。
-
在左侧边栏中,点击 开发者设置。
-
在左侧边栏中,点击GitHub Apps。
-
在您要修改的 GitHub App 旁边,点击编辑。
-
在 GitHub Apps 设置侧边栏中,点击可选功能。
-
在“用户到服务器令牌过期”旁边,点击启用或禁用。此设置可能需要几秒钟才能应用。
GitHub 建议您启用此功能以提高安全性。
如果您在已生成用户访问令牌后启用了用户访问令牌过期,则之前生成的访问令牌不会过期。您可以使用 DELETE /applications/CLIENT_ID/token
端点删除这些令牌。有关更多信息,请参阅“OAuth 授权的 REST API 端点”。
使用刷新令牌刷新用户访问令牌
-
向以下 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
字符串
必需。 您在生成用户访问令牌时收到的刷新令牌。 -
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
。