Ao configurar um aplicativo OAuth no GitHub, os escopos solicitados são exibidos para o usuário no formulário de autorização.
Observação: Se você está criando um aplicativo no GitHub, você não precisa fornecer escopos na sua solicitação de autorização. Para obter mais informações sobre isso, consulte "Identificar e autorizar usuários para aplicativos GitHub".
Se seu aplicativo OAuth não tiver acesso a um navegador, como uma ferramenta de CLI, você não precisará especificar um escopo para que os usuários efetuem a autenticação no seu aplicativo. Para obter mais informações, consulte "Autorizar aplicativos OAuth".
Verifique os cabeçalhos para ver quais escopos do OAuth você tem e o que a ação da API aceita:
$ curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com/users/codertocat -I
HTTP/2 200
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
X-OAuth-Scopes
lista o escopo que seu token autorizou.X-Accepted-OAuth-Scopes
lista os escopos verificados pela ação.
Escopos disponíveis
Nome | Descrição |
---|---|
(sem escopo) | Concede acesso somente leitura a informações públicas (incluindo informações do perfil do usuário, informações do repositório e gists) |
repo | Grants full access to public and private repositories including read and write access to code, commit statuses, repository invitations, collaborators, deployment statuses, and repository webhooks. Note: In addition to repository related resources, the repo scope also grants access to manage organization-owned resources including projects, invitations, team memberships and webhooks. This scope also grants the ability to manage projects owned by users. |
repo:status | Concede acesso de leitura/gravaçãopara fazer commit de status em repositórios públicos, privados e internos. Esse escopo só é necessário para conceder a outros usuários ou serviços acesso a status de compromisso de repositórios privados sem conceder acesso ao código. |
repo_deployment | Concede acesso aos status da implementação para público e repositórios privados. Este escopo só é necessário para conceder a outros usuários ou serviços acesso aos status de implantação, sem conceder acesso ao código. |
public_repo | Limita o acesso a repositórios públicos. Isso inclui acesso de leitura/gravação em código, status de commit, projetos de repositório, colaboradores e status de implantação de repositórios e organizações públicos. Também é necessário para repositórios públicos marcados como favoritos. |
repo:invite | Concede habilidades de aceitar/recusar convites para colaborar em um repositório. Este escopo só é necessário para conceder a outros usuários ou serviços acesso a convites sem conceder acesso ao código. |
security_events | Concede: acesso de leitura e gravação aos eventos de segurança na API de Varredura de código Esse escopo é somente necessário para conceder aos outros usuários ou serviços acesso aos eventos de segurança sem conceder acesso ao código. |
admin:repo_hook | Concede acesso de leitura, gravação, fixação e exclusão aos hooks do repositório em repositórios públicos, privados ou internos. O escopos do repo e public_repo concedem o acesso total aos repositórios, incluindo hooks de repositório. Use o escopo admin:repo_hook para limitar o acesso apenas a hooks de repositório. |
write:repo_hook | Concede acesso de leitura, gravação e fixação aos hooks em repositórios públicos ou privados. |
read:repo_hook | Concede acesso de leitura e fixação aos hooks em repositórios públicos ou privados. |
admin:org | Gerencia totalmente a organização e suas equipes, projetos e associações. |
write:org | Acesso de leitura e gravação à associação da organização, aos projetos da organização e à associação da equipe. |
read:org | Acesso somente leitura à associação da organização, aos projetos da organização e à associação da equipe. |
admin:public_key | Gerenciar totalmente as chaves públicas. |
write:public_key | Criar, listar e visualizar informações das chaves públicas. |
read:public_key | Listar e visualizar informações para as chaves públicas. |
admin:org_hook | Concede acesso de leitura, gravação, ping e e exclusão de hooks da organização. Observação: Os tokens do OAuth só serão capazes de realizar essas ações nos hooks da organização que foram criados pelo aplicativo OAuth. Os tokens de acesso pessoal só poderão realizar essas ações nos hooks da organização criados por um usuário. |
gist | Concede acesso de gravação aos gists. |
notificações | Condece: acesso de gravação a notificações de um usuário acesso para marcar como leitura nos threads acesso para inspecionar e não inspecionar um repositório e acesso de leitura, gravação e exclusão às assinaturas dos threads. |
usuário | Concede acesso de leitura/gravação apenas às informações do perfil. Observe que este escopo inclui user:email e user:follow . |
read:user | Concede acesso para ler as informações do perfil de um usuário. |
usuário:email | Concede acesso de leitura aos endereços de e-mail de um usuário. |
user:follow | Concede acesso para seguir ou deixar de seguir outros usuários. |
project | Grants read/write access to user and organization projetos. |
read:project | Grants read only access to user and organization projetos. |
delete_repo | Concede acesso para excluir repositórios administráveis. |
write:discussion | Permite acesso de leitura e gravação para discussões da equipe. |
leia:discussion | Permite acesso de leitura para discussões em equipe. |
write:packages | Concede acesso ao para fazer o upload ou publicação de um pacote no GitHub Package Registry. Para obter mais informações, consulte "Publicar um pacote". |
read:packages | Concede acesso ao download ou instalação de pacotes do GitHub Package Registry. Para obter mais informações, consulte "Instalando um pacote". |
delete:packages | Concede acesso para excluir pacotes de GitHub Package Registry. Para obter mais informações, consulte "Excluir e restaurar um pacote". |
admin:gpg_key | Gerenciar totalmente as chaves GPG. |
write:gpg_key | Criar, listar e visualizar informações das chaves GPG. |
read:gpg_key | Listar e visualizar informações das chaves GPG. |
codespace | Concede a capacidade de criar e gerenciar codespaces. Os codespaces podem expor um GITHUB_TOKEN que pode ter um conjunto diferente de escopos. Para obter mais informações, consulte "Segurança em GitHub Codespaces." |
fluxo de trabalho | Concede a capacidade de adicionar e atualizar arquivos do fluxo de trabalho do GitHub Actions. Os arquivos do fluxo de trabalho podem ser confirmados sem este escopo se o mesmo arquivo (com o mesmo caminho e conteúdo) existir em outro branch no mesmo repositório. Os arquivos do fluxo de trabalho podem expor o GITHUB_TOKEN que pode ter um conjunto diferente de escopos. Para obter mais informações, consulte "Autenticação em um fluxo de trabalho". |
Observação: O seu aplicativo OAuth pode solicitar os escopos no redirecionamento inicial. Você pode especificar vários escopos separando-os com um espaço usando %20
:
https://github.com/login/oauth/authorize?
client_id=...&
scope=user%20repo_deployment
Escopos solicitados e escopos concedidos
O atributo escopo
lista os escopos adicionados ao token que foram concedido pelo usuário. Normalmente, estes escopos são idênticos aos que você solicitou. No entanto, os usuários podem editar seus escopos, concedendo, efetivamente, ao seu aplicativo um acesso menor do que você solicitou originalmente. Além disso, os usuários podem editar o escopo do token depois que o fluxo do OAuth for concluído. Você deve ter em mente esta possibilidade e ajustar o comportamento do seu aplicativo de acordo com isso.
É importante lidar com casos de erro em que um usuário escolhe conceder menos acesso do que solicitado originalmente. Por exemplo, os aplicativos podem alertar ou informar aos seus usuários que a funcionalidade será reduzida ou não serão capazes de realizar algumas ações.
Além disso, os aplicativos sempre podem enviar os usuários de volta através do fluxo para obter permissão adicional, mas não se esqueça de que os usuários sempre podem dizer não.
Confira o Príncípios do guia de autenticação, que fornece dicas para lidar com escopos de token modificável.
Escopos normalizados
Ao solicitar vários escopos, o token é salvo com uma lista normalizada de escopos, descartando aqueles que estão implicitamente incluídos pelo escopo solicitado. Por exemplo, a solicitação do usuário user,gist,user:email
irá gerar apenas um token com escopos de usuário
e gist
, desde que o acesso concedido com o escopo user:email
esteja incluído no escopo usuário
.