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".
Quando o seu aplicativo GitHub age em nome de um usuário, ele realiza solicitações de usuário para servidor. Essas solicitações devem ser autorizadas com o token de acesso de um usuário. As solicitações de usuário para servidor incluem a solicitação de dados para um usuário, como determinar quais repositórios devem ser exibidos para um determinado usuário. Essas solicitações também incluem ações acionadas por um usuário, como executar uma criação.
Para manter tokens de acesso do usuário para servidor mais seguros, você pode usar tokens de acesso que expiram após 8 horas, e um token de atualização que pode ser trocado por um novo token de acesso. Para obter mais informações, confira "Como atualizar tokens de acesso de usuário para servidor".
Identificando usuários no seu site
Para autorizar usuários em aplicativos padrão executados no navegador, use o fluxo do aplicativo Web.
Para autorizar usuários em aplicativos sem periféricos que não têm acesso direto ao navegador, como ferramentas da CLI ou gerenciadores de credenciais do Git, use o fluxo do dispositivo. O fluxo do dispositivo usa a Concessão de Autorização de Dispositivo do OAuth 2.0.
Fluxo do aplicativo web
Ao usar o fluxo de aplicativo web, o processo para identificar usuários no seu site é:
- Os usuários são redirecionados para solicitar sua identidade do GitHub
- Os usuários são redirecionados de volta para o seu site pelo GitHub
- Seu aplicativo GitHub acessa a API com o token de acesso do usuário
Se você selecionar Solicitar autorização do usuário (OAuth) durante a instalação ao criar ou modificar seu aplicativo, a etapa 1 será concluída durante a instalação do aplicativo. Para obter mais informações, confira "Como autorizar usuários durante a instalação".
1. Solicitar a identidade do GitHub de um usuário
Direcione o usuário para a seguinte URL em seu navegador:
GET http(s)://HOSTNAME/login/oauth/authorize
Quando seu Aplicativo do GitHub especifica um parâmetro login
, ele mostra um prompt para os usuários com uma conta específica que eles podem usar para se conectarem e autorizar seu aplicativo.
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
client_id | string | Necessário. A ID do cliente do Aplicativo do GitHub. Encontre isso nas configurações do Aplicativo do GitHub ao selecionar seu aplicativo. Observação: a ID do aplicativo e a ID do cliente não são iguais e não são intercambiáveis. |
redirect_uri | string | A URL no seu aplicativo para o qual os usuários serão enviados após a autorização. Isso precisa ser uma correspondência exata com uma das URLs fornecidas como uma URL de retorno de chamada quando o Aplicativo do GitHub é configurado e não pode conter nenhum parâmetro adicional. |
state | string | Isso deve conter uma string aleatória para proteger contra ataques falsificados e pode conter quaisquer outros dados arbitrários. |
login | string | Sugere uma conta específica para iniciar a sessão e autorizar o aplicativo. |
allow_signup | string | Independentemente de os usuários autenticados ou não atenticados terem a opção de iscrever-se em GitHub durante o fluxo do OAuth. O padrão é true . Use false quando uma política proibir inscrições. |
Observação: você não precisa fornecer escopos na solicitação de autorização. Ao contrário do OAuth tradicional, o token de autorização é limitado � s permissões associadas ao seu aplicativo GitHub e � s do usuário.
2. Os usuários são redirecionados para seu site pelo GitHub
Se o usuário aceitar sua solicitação, o GitHub o redirecionará para seu site com um code
temporário em um parâmetro de código, bem como o estado que você forneceu na etapa anterior em um parâmetro state
. Se os estados não corresponderem, o pedido foi criado por terceiros e o processo deve ser abortado.
Observação: se você selecionar Solicitar autorização do usuário (OAuth) durante a instalação ao criar ou modificar seu aplicativo, o GitHub retornará um code
temporário que você precisará trocar por um token de acesso. O parâmetro state
não é retornado quando o GitHub inicia o fluxo do OAuth durante a instalação do aplicativo.
Troque este code
por um token de acesso. Quando os tokens vencidos estiverem habilitados, token de acesso irá expirar em 8 horas e o token de atualização irá expirar em 6 meses. Toda vez que você atualizar o token, você receberá um novo token de atualização. Para obter mais informações, confira "Como atualizar tokens de acesso de usuário para servidor".
Os tokens de usuário expirados são atualmente um recurso opcional e estão sujeitos a alterações. Para aceitar o recurso de expiração do token de usuário para servidor, confira "Como ativar recursos opcionais para aplicativos".
Faça um pedido para o seguinte ponto de extremidade para receber um token de acesso:
POST http(s)://HOSTNAME/login/oauth/access_token
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
client_id | string | Necessário. A ID do cliente do Aplicativo do GitHub. |
client_secret | string | Necessário. O segredo do cliente do Aplicativo do GitHub. |
code | string | Necessário. O código que você recebeu como resposta � Etapa 1. |
redirect_uri | string | A URL no seu aplicativo para o qual os usuários serão enviados após a autorização. Isso precisa ser uma correspondência exata com uma das URLs fornecidas como uma URL de retorno de chamada quando o Aplicativo do GitHub é configurado e não pode conter nenhum parâmetro adicional. |
state | string | A string aleatória inexplicável que você forneceu na etapa 1. |
Resposta
Por padrão, a resposta assume o seguinte formato. Os parâmetros de resposta expires_in
, refresh_token
e refresh_token_expires_in
só são retornados quando você habilita o vencimento dos tokens de acesso de usuário para servidor.
{
"access_token": "ghu_16C7e42F292c6912E7710c838347Ae178B4a",
"expires_in": 28800,
"refresh_token": "ghr_1B4a2e77838347a7E420ce178F2E7c6912E169246c34E1ccbF66C46812d16D5B1A9Dc86A1498",
"refresh_token_expires_in": 15811200,
"scope": "",
"token_type": "bearer"
}
3. Seu Aplicativo do GitHub acessa a API com o token de acesso do usuário
O token de acesso do usuário permite que o aplicativo GitHub faça solicitações para a API em nome de um usuário.
Authorization: Bearer OAUTH-TOKEN
GET http(s)://HOSTNAME/api/v3/user
Por exemplo, no cURL você pode definir o cabeçalho de autorização da seguinte forma:
curl -H "Authorization: Bearer OAUTH-TOKEN" http(s)://HOSTNAME/api/v3/user
Fluxo de dispositivo
Observação: o fluxo do dispositivo está em versão beta pública e sujeito a alterações.
O fluxo de dispositivos permite que você autorize usuários para um aplicativo sem cabeçalho, como uma ferramenta de CLI ou um gerenciador de credenciais do Git.
Para obter mais informações sobre como autorizar usuários usando o fluxo do dispositivo, confira "Como autorizar aplicativos do OAuth".
Verifique quais recursos de instalação um usuário pode acessar
Depois de ter um token OAuth para um usuário, você pode verificar quais instalações o usuário poderá acessar.
Authorization: Bearer OAUTH-TOKEN
GET /user/installations
Você também pode verificar quais repositórios são acessíveis a um usuário para uma instalação.
Authorization: Bearer OAUTH-TOKEN
GET /user/installations/:installation_id/repositories
Encontre mais detalhes em: Listar as instalações de aplicativo acessíveis para o token de acesso do usuário e Listar os repositórios acessíveis para o token de acesso do usuário.
Tratar uma autorização revogada do aplicativo GitHub
Se um usuário revogar a autorização dele de um Aplicativo do GitHub, o aplicativo receberá o webhook github_app_authorization
por padrão. Os aplicativos GitHub não podem cancelar a assinatura deste evento. Qualquer pessoa pode revogar a autorização de um aplicativo GitHub na página de configurações da conta GitHub. Revogar a autorização de um aplicativo GitHub não desinstala o aplicativo GitHub. Você deve programar seu aplicativo do GitHub para que, ao receber esse webhook, ele para de chamar a API em nome da pessoa que revogou o token. Se o aplicativo GitHub continuar a usar um token de acesso revogado, ele receberá o erro 401 Bad Credentials
.
Permissões no nível do usuário
Você pode adicionar permissões de nível de usuário ao seu Aplicativo do GitHub para acessar os recursos do usuário, como emails de usuários, que são concedidas por usuários individuais como parte do fluxo de autorização do usuário. As permissões de nível de usuário são diferentes das permissões de nível da organização e do repositório, que são concedidas no momento da instalação em uma conta pessoal ou corporativa.
Você pode selecionar permissões de nível de usuário nas configurações do Aplicativo do GitHub na seção Permissões do usuário da página Permissões e webhooks. Para obter mais informações sobre como selecionar permissões, confira "Como editar as permissões de um Aplicativo do GitHub".
Quando um usuário instala seu aplicativo em sua conta, o prompt de instalação listará as permissões de nível de usuário que seu aplicativo solicita e explicará que o aplicativo pode pedir essas permissões a usuários individuais.
Como as permissões de nível de usuário são concedidas em uma base de usuário individual, você poderá adicioná-las ao aplicativo existente sem pedir que os usuários façam a atualização. No entanto, você precisa enviar usuários existentes através do fluxo de autorização do usuário para autorizar a nova permissão e obter um novo token de usuário para servidor para essas solicitações.
Solicitações de usuário para servidor
Embora a maior parte da interação da sua API deva ocorrer usando os tokens de acesso de servidor para servidor, certos pontos de extremidade permitem que você execute ações por meio da API usando um token de acesso do usuário. O aplicativo pode fazer as solicitações a seguir usando pontos de extremidade do GraphQL ou REST.
Pontos de extremidade compatíveis
Execuções de verificação
- Criar uma execução de verificação
- Obter uma execução de verificação
- Atualizar uma execução de verificação
- Listar as anotações da execução de verificação
- Listar as execuções de verificação em um conjunto de verificações
- Listar as execuções de verificação de uma referência do Git
conjuntos de verificações
- Criar um conjunto de verificações
- Obter um conjunto de verificações
- Solicitar um conjunto de verificações novamente
- Atualizar as preferências de conjuntos de verificações do repositório
- Listar os conjuntos de verificações de uma referência do Git
Códigos de conduta
Status da implementação
Implantações
Eventos
Feeds
Blobs do Git
Confirmações do Git
Refs do Git
- Criar uma referência
- Obter uma referência
- Listar as referências correspondentes
- Atualizar uma referência
- Excluir uma referência
Tags do Git
Árvores do Git
Modelos do Gitignore
Instalações
Responsáveis pelo problema
Comentários do problema
- Listar os comentários de um problema
- Criar um comentário de um problema
- Listar os comentários de um problema de um repositório
- Obter um comentário de um problema
- Atualizar um comentário de um problema
- Excluir um comentário de um problema
Eventos do problema
Linha do tempo do problema
Problemas
- Listar os problemas atribuídos ao usuário autenticado
- Listar os destinatários
- Verificar se um usuário pode ser atribuído
- Listar os problemas de um repositório
- Criar um problema
- Obter um problema
- Atualizar um problema
- Bloquear um problema
- Desbloquear um problema
Rótulos
- Listar os rótulos de um problema
- Adicionar rótulos a um problema
- Definir os rótulos de um problema
- Remover todos os rótulos de um problema
- Remover um rótulo de um problema
- Listar os rótulos de um repositório
- Criar um rótulo
- Obter um rótulo
- Atualizar um rótulo
- Excluir um rótulo
- Obter os rótulos de cada problema em um marco
Licenças
Markdown
Meta
Marcos
Hooks da organização
- Listar os webhooks de uma organização
- Criar um webhook de uma organização
- Obter um webhook de uma organização
- Atualizar um webhook de uma organização
- Excluir um webhook de uma organização
- Executar ping em um webhook de uma organização
Integrantes da organização
- Listar os membros de uma organização
- Verificar a associação a uma organização de um usuário
- Remover um membro de uma organização
- Obter a associação a uma organização de um usuário
- Definir a associação a uma organização de um usuário
- Remover a associação a uma organização de um usuário
- Listar os membros públicos de uma organização
- Verificar a associação a uma organização pública de um usuário
- Definir a associação a uma organização pública do usuário autenticado
- Remover a associação a uma organização pública do usuário autenticado
Colaboradores externos da organização
- Listar os colaboradores externos de uma organização
- Converter um membro de uma organização em um colaborador externo
- Remover os colaboradores externos de uma organização
Hooks pre-receive da organização
- Listar os ganchos de pré-recebimento de uma organização
- Obter um gancho de pré-recebimento de uma organização
- Atualizar a imposição de um gancho de pré-recebimento de uma organização
- Remover a imposição de um gancho de pré-recebimento de uma organização
Projetos da aquipe da organização
- Listar os projetos de equipe
- Verificar as permissões da equipe em um projeto
- Adicionar ou atualizar as permissões de projeto de equipe
- Remover um projeto de uma equipe
Repositórios da equipe da organização
- Listar os repositórios da equipe
- Verificar as permissões da equipe em um repositório
- Adicionar ou atualizar as permissões de repositório da equipe
- Remover um repositório de uma equipe
Equipes da organização
- Listar as equipes
- Criar uma equipe
- Obter uma equipe pelo nome
- Atualizar uma equipe
- Excluir uma equipe
- Listar os membros da equipe
- Obter a associação a uma equipe de um usuário
- Adicionar ou atualizar a associação a uma equipe de um usuário
- Remover a associação a uma equipe de um usuário
- Listar as equipes filho
- Listar as equipes do usuário autenticado
Organizações
- Listar organizações
- Obter uma organização
- Atualizar uma organização
- Listar as associações a uma organização do usuário autenticado
- Obter a associação a uma organização do usuário autenticado
- Atualizar a associação a uma organização do usuário autenticado
- Listar as organizações do usuário autenticado
- Listar as organizações de um usuário
Colaboradores do projeto
- Listar os colaboradores do projeto
- Adicionar um colaborador do projeto
- Remover um colaborador do projeto
- Obter a permissão de projeto para um usuário
Projetos
- Listar os projetos da organização
- Criar um projeto da organização
- Obter um projeto
- Atualizar um projeto
- Excluir um projeto
- Listar as colunas do projeto
- Criar uma coluna do projeto
- Obter uma coluna do projeto
- Atualizar uma coluna do projeto
- Excluir uma coluna do projeto
- Listar os cartões do projeto
- Criar um cartão de projeto
- Mover uma coluna do projeto
- Obter um cartão do projeto
- Atualizar um cartão do projeto
- Excluir um cartão do projeto
- Mover um cartão do projeto
- Listar os projetos do repositório
- Criar um projeto do repositório
Commentários pull
- Listar os comentários de revisão em uma solicitação de pull
- Criar um comentário de revisão para uma solicitação de pull
- Listar os comentários de revisão em um repositório
- Obter um comentário de revisão para uma solicitação de pull
- Atualizar um comentário de revisão para uma solicitação de pull
- Excluir um comentário de revisão para uma solicitação de pull
Eventos de revisão de pull request
Solicitações de revisão de pull request
- Listar os revisores solicitados para uma solicitação de pull
- Solicitar revisores para uma solicitação de pull
- Remover os revisores solicitados de uma solicitação de pull
Revisões de pull request
- Listar as revisões para uma solicitação de pull
- Criar uma revisão para uma solicitação de pull
- Obter uma revisão para uma solicitação de pull
- Atualizar uma revisão para uma solicitação de pull
- Listar os comentários para uma revisão de solicitação de pull
Pulls
- Listar as solicitações de pull
- Criar uma solicitação de pull
- Obter uma solicitação de pull
- Atualizar uma solicitação de pull
- Listar os commits em uma solicitação de pull
- Listar os arquivos de solicitações de pull
- Verificar se uma solicitação de pull foi mesclada
- Mesclar uma solicitação de pull (botão Mesclar)
Reações
- Excluir uma reação
- Listar as reações a um comentário sobre um commit
- Criar uma reação a um comentário sobre um commit
- Listar as reações a um problema
- Criar uma reação a um problema
- Listar as reações a um comentário sobre um problema
- Criar uma reação a um comentário sobre um problema
- Listar as reações a um comentário de revisão de solicitação de pull
- Criar uma reação a um comentário de revisão de solicitação de pull
- Listar as reações a um comentário de discussão em equipe
- Criar uma reação a um comentário de discussão em equipe
- Listar as reações a uma discussão em equipe
- Criar uma reação a uma discussão em equipe
- Excluir uma reação a um comentário sobre um commit
- Excluir uma reação a um problema
- Excluir uma reação a um comentário sobre um commit
- Excluir uma reação a um comentário sobre uma solicitação de pull
- Excluir uma reação a uma discussão em equipe
- Excluir uma reação a um comentário sobre uma discussão em equipe
Repositórios
- Listar os repositórios da organização
- Criar um repositório para o usuário autenticado
- Obter um repositório
- Atualizar um repositório
- Excluir um repositório
- Comparar dois commits
- Listar os colaboradores do repositório
- Listar os forks
- Criar um fork
- Listar as linguagens do repositório
- Listar as marcas do repositório
- Listar as equipes do repositório
- Transferir um repositório
- Listar os repositórios públicos
- Listar os repositórios do usuário autenticado
- Listar os repositórios de um usuário
- Criar um repositório usando um modelo de repositório
Atividade do repositório
- Listar os observadores de favoritos
- Listar os inspetores
- Listar os repositórios adicionados aos favoritos por um usuário
- Verificar se um repositório foi adicionado aos favoritos pelo usuário autenticado
- Adicionar um repositório aos favoritos para o usuário autenticado
- Remover dos favoritos um repositório do usuário autenticado
- Listar os repositórios inspecionados por um usuário
Branches do repositório
- Listar os branches
- Obter um branch
- Obter uma proteção do branch
- Atualizar uma proteção do branch
- Excluir uma proteção do branch
- Obter uma proteção do branch do administrador
- Definir uma proteção do branch do administrador
- Excluir uma proteção do branch do administrador
- Obter uma proteção de revisão da solicitação de pull
- Atualizar uma proteção de revisão da solicitação de pull
- Excluir uma proteção de revisão da solicitação de pull
- Obter uma proteção de assinatura do commit
- Criar uma proteção de assinatura do commit
- Excluir uma proteção de assinatura do commit
- Obter uma proteção contra verificações de status
- Atualizar uma proteção de verificação de status
- Remover uma proteção de verificação de status
- Obter todos os contextos de verificação de status
- Adicionar contextos de verificação de status
- Definir contextos de verificação de status
- Remover contextos de verificação de status
- Obter restrições de acesso
- Excluir restrições de acesso
- Listar as equipes com acesso ao branch protegido
- Adicionar restrições de acesso da equipe
- Definir restrições de acesso da equipe
- Remover uma restrição de acesso da equipe
- Listar as restrições de usuário do branch protegido
- Adicionar restrições de acesso do usuário
- Definir restrições de acesso do usuário
- Remover restrições de acesso do usuário
- Mesclar uma ramificação
Colaboradores do repositório
- Listar os colaboradores do repositório
- Verificar se um usuário é colaborador de um repositório
- Adicionar um colaborador do repositório
- Remover um colaborador do repositório
- Obter permissões de repositório de um usuário
Comentários do commit do repositório
- Listar os comentários sobre um commit de um repositório
- Obter um comentário sobre um commit
- Atualizar um comentário sobre um commit
- Excluir um comentário sobre um commit
- Listar os comentários sobre um commit
- Criar um comentário sobre um commit
Commits do repositório
- Listar os commits
- Obter um commit
- Listar os branches do commit principal
- Listar as solicitações de pull associados ao commit
Comunidade do repositório
Conteúdo do repositório
- Baixar um arquivo do repositório
- Obter o conteúdo de um repositório
- Criar ou atualizar o conteúdo de um arquivo
- Excluir um arquivo
- Obter o README de um repositório
- Obter a licença de um repositório
Envio de eventos do repositório
Hooks do repositório
- Listar os webhooks de um repositório
- Criar um webhook de um repositório
- Obter um webhook de um repositório
- Atualizar um webhook de um repositório
- Excluir um webhook de um repositório
- Executar ping em um webhook de um repositório
- Testar o webhook de um repositório de push
Convites do repositório
- Listar os convites de um repositório
- Atualizar um convite de um repositório
- Excluir um convite de um repositório
- Listar os convites de um repositório do usuário autenticado
- Aceitar um convite de um repositório
- Recusar um convite de um repositório
Chaves de repositório
- Listar as chaves de implantação
- Criar uma chave de implantação
- Obter uma chave de implantação
- Excluir uma chave de implantação
Páginas do repositório
- Obter um site do GitHub Pages
- Criar um site do GitHub Pages
- Atualizar informações sobre um site do GitHub Pages
- Excluir um site do GitHub Pages
- Listar os builds do GitHub Pages
- Solicitar um build do GitHub Pages
- Obter um build do GitHub Pages
- Obter o último build do Pages
Hooks pre-receive do repositório
- Listar os ganchos de pré-recebimento de um repositório
- Obter um gancho de pré-recebimento de um repositório
- Atualizar a imposição de um gancho de pré-recebimento de um repositório
- Remover a imposição de um gancho de pré-recebimento de um repositório
Versões do repositório
- Listar versões
- Criar uma versão
- Obter uma versão
- Atualizar uma versão
- Excluir uma versão
- Listar os ativos da versão
- Obter um ativo da versão
- Atualizar um ativo da versão
- Excluir um ativo da versão
- Obter a última atualização
- Obter uma versão pelo nome da marca
Estatísticas do repositório
- Obter as atividades semanais do commit
- Obter o último ano de atividades do commit
- Obter todas as atividades do commit do contribuidor
- Obter a contagem semanal de commits
- Obter a contagem de commits por hora para cada dia
Root
Pesquisar
- Buscar um código
- Pesquisar commits
- Pesquisar rótulos
- Pesquisar repositórios
- Pesquisar tópicos
- Pesquisar usuários
Status
- Obter o status combinado de uma referência específica
- Listar os status de commit de uma referência
- Criar um status de commit
Discussões de equipe
- Listar as discussões
- Criar uma discussão
- Obter uma discussão
- Atualizar uma discussão
- Excluir uma discussão
- Listar os comentários de uma discussão
- Criar um comentário sobre uma discussão
- Obter um comentário sobre uma discussão
- Atualizar um comentário sobre uma discussão
- Excluir um comentário sobre uma discussão
Tópicos
Emails do Usuário
- Listar os endereços de email do usuário autenticado
- Adicionar endereços de email
- Excluir endereços de email
- Listar os endereços de email públicos do usuário autenticado
Seguidores do usuário
- Listar os seguidores de um usuário
- Listar as pessoas que um usuário segue
- Verificar se uma pessoa é seguida pelo usuário autenticado
- Seguir um usuário
- Deixar de seguir um usuário
- Verificar se um usuário segue outro usuário
Chaves Gpg do usuário
- Listar as chaves GPG do usuário autenticado
- Criar uma chave GPG do usuário autenticado
- Obter uma chave GPG do usuário autenticado
- Excluir uma chave GPG do usuário autenticado
- Listar as chaves GPG de um usuário
Chaves públicas do usuário
- Listar as chaves SSH públicas do usuário autenticado
- Criar uma chave SSH pública do usuário autenticado
- Obter uma chave SSH pública do usuário autenticado
- Excluir uma chave SSH pública do usuário autenticado
- Listar as chaves públicas de um usuário
Usuários
- Obter o usuário autenticado
- Listar as instalações de aplicativos acessíveis ao token de acesso do usuário
- Listar usuários
- Obter um usuário