Observação: atualmente, os tokens de usuário prestes a vencer são um recurso opcional e estão sujeitos a alterações. Para aceitar ou recusar o recurso de vencimento de token de usuário para servidor, confira "Como ativar recursos opcionais para aplicativos". Para obter mais informações, confira "Como expirar tokens de acesso de usuário para servidor para Aplicativos do GitHub".
Sobre os tokens de acesso do usuário expirados
Para aplicar a rotação regular do token e reduzir o impacto de um token comprometido, você pode configurar seu GitHub App para usar tokens de acesso do usuário expirados. Para obter mais informações sobre como fazer solicitações de usuário para servidor, confira "Como identificar e autorizar usuários para Aplicativos do GitHub".
Os tokens de usuário expiram após 8 horas. Ao receber um novo token de acesso do usuário para servidor, a resposta também conterá um token de atualização, que pode ser trocado por um novo token de usuário e token de atualização. Os tokens de atualização são válidos por 6 meses.
Renovar um token de usuário com um token de atualização
Para renovar um token de acesso de usuário para servidor com validade, troque o refresh_token
por um novo token de acesso e um refresh_token
.
POST https://github.com/login/oauth/access_token
Esta solicitação de retorno de chamada enviará um novo token de acesso e um novo token de atualização. Essa solicitação de retorno de chamada é semelhante � solicitação do OAuth que você usará para trocar um code
temporário por um token de acesso. Para obter mais informações, confira "Como identificar e autorizar usuários para Aplicativos do GitHub" e "Noções básicas sobre autenticação".
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
refresh_token | string | Necessário. O token gerado quando o proprietário do GitHub App habilita tokens com validade e emite um novo token de acesso do usuário. |
grant_type | string | Necessário. O valor precisa ser refresh_token (exigido pela especificação OAuth). |
client_id | string | Necessário. A ID do cliente do GitHub App. |
client_secret | string | Necessário. O segredo do cliente do GitHub App. |
Resposta
{
"access_token": "ghu_16C7e42F292c6912E7710c838347Ae178B4a",
"expires_in": "28800",
"refresh_token": "ghr_1B4a2e77838347a7E420ce178F2E7c6912E169246c34E1ccbF66C46812d16D5B1A9Dc86A1498",
"refresh_token_expires_in": "15811200",
"scope": "",
"token_type": "bearer"
}
Configurar tokens de usuário expirados para um aplicativo GitHub existente
Você pode habilitar ou desabilitar a expiração de tokens de autorização usuário para servidor nas suas configurações do GitHub App.
-
No canto superior direito de qualquer página, clique na foto do seu perfil e em Configurações.
-
In the left sidebar, click Developer settings.
-
Na barra lateral esquerda, clique em Aplicativos do GitHub.
-
Clique em Editar ao lado do GitHub App escolhido.
-
Na barra lateral esquerda, clique em Recursos Opcionais.
-
Ao lado de "Validade do token de usuário para servidor", clique em Aceitar ou em Recusar. Essa configuração pode levar alguns segundos para ser aplicada.
Não participar dos tokens expirados para novos aplicativos do GitHub
Quando você cria um novo GitHub App, por padrão, seu aplicativo usará os tokens de acesso expirados do usuário para servidor.
Se você desejar que o seu aplicativo use tokens de acesso do usuário para servidor que não expiram, você pode desmarcar a opção "Expirar tokens de autorização do usuário" na página de configurações do aplicativo.
Os GitHub Apps existentes que usa tokens de autorização de usuário para servidor só são afetados por este novo fluxo quando o proprietário do aplicativo habilita o vencimento de tokens de usuário para seu aplicativo.
Habilitar o vencimento de tokens de usuário para GitHub Apps existentes exige o envio de usuários por meio do do fluxo do OAuth para reemitir tokens de usuário que vencerão em 8 horas e fazer uma solicitação com o token de atualização para obter um novo token de acesso e token de atualização. Para obter mais informações, confira "Como identificar e autorizar usuários para Aplicativos do GitHub".