Usethis::use_github retorna GitHub API error (404)

O quero fazer:
Criar um site pessoal usando blogdown:: em um repositório Github.

Problema:
A função usethis::use_github() retorna um erro ! GitHub API error (404): Not Found

Passos que estou seguindo (seguindo o post da @beatrizmilz ):

#  (1) Criar Projeto:
  usethis::create_project("/home/Nome/Documentos/Projetos/Meuprojeto/")

#  (2) Vincular o Git ao projeto.
  usethis::use_git()
  
#  (3) Gerar um token github
  usethis::create_github_token()
  gitcreds::gitcreds_set()
#  ou 
  usethis::edit_r_environ() # Add GITHUB_PAT="00000000000000"
#  (4) Conferir a config.
  usethis::git_sitrep() 
  
#> 
── Git global (user) 
• Name: 'viniciovcl'
• Email: 'viniciovcl@gmail.com'
• Global (user-level) gitignore file: <unset>
• Vaccinated: FALSE
ℹ See `?git_vaccinate` to learn more
• Default Git protocol: 'https'
• Default initial branch name: <unset>

── GitHub user 
• Default GitHub host: 'https://github.com'
ℹ '/home/vinicio/.Renviron' defines environment variable(s):
  - GITHUB_PAT
  This can prevent your PAT from being retrieved from the Git credential store.
ℹ If you are troubleshooting PAT problems, the root cause may be an old, invalid PAT defined in '/home/vinicio/.Renviron'.
• Call `edit_r_environ()` to edit that file.
ℹ For most use cases, it is better to NOT define the PAT in `.Renviron`.
  Instead, call `gitcreds::gitcreds_set()` to put the PAT into the Git credential store.
• Personal access token for 'https://github.com': '<discovered>'
• GitHub user: 'viniciovcl'
• Token scopes: ''
✖ Token has no scopes!
  `create_github_token()` defaults to the recommended scopes.
✖ Can't retrieve registered email addresses from GitHub.
  Consider re-creating your PAT with the 'user' or at least 'user:email' scope.
ℹ No active usethis project
#  (5) Criar o repositório do meu projeto
 usethis::use_github()

# (6)  Erro:

 # Error in `gh::gh()`:
 #   ! GitHub API error (404): Not Found
 # ✖ URL not found: <https://api.github.com/user/repos>
 #   ℹ Read more at
 # <https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user>
 # Run `rlang::last_trace()` to see where the error occurred.  
 
#  (7) Consultas 
 gh::gh_whoami()
#> {
 "name": "Vinicio Lima",
 "login": "viniciovcl",
 "html_url": "https://github.com/viniciovcl",
 "scopes": "",
 "token": "ghp_...Gygd"
} 

Não encontrei esse erro nos posts. Alguém já recebeu esse erro?

Created on 2024-02-19 with reprex v2.0.2

Oi Vinícius ! Tudo bem?
Obrigada por enviar essa dúvida junto ao resultado do git_sitrep()!

Vamos investigar…O problema está na configuração da conexão do GitHub com o seu computador.

A mensagem de erro aparece que o token não tem scopes.
Sabe quando usamos a função create_github_token(), e abre uma página no github com várias opções pra clicar (nesse momento eu costumo recomendar apenas colocar um nome e um prazo de expiração)?
Aquelas opções abaixo (que eu costumo não clicar em nada) são os scopes.
Scopes definem o que é que a sua chave tem permissão de fazer, e parece que a chave que o R está encontrando não tem permissão nenhuma.

O que eu recomendo:

  • usar a função abaixo, criar um novo token e não alterar os scopes:
create_github_token()
  • Copiar esse novo token.

  • Abrir o arquivo R environ e remover a linha do token antigo de lá. Não precisa colocar o novo no lugar, vamos usar o gitcreds logo a seguir.

  usethis::edit_r_environ()
  • Adicionar no seu RStudio usando a função gitcreds::gitcreds_set() e substituindo o token antigo.

  • Reiniciar a seção do RStudio.

Tentar novamente a etapa do usethis::git_sitrep(), e se estiver tudo ok, prosseguir para usethis::use_github().

No código colocado, também ficou parecendo que você rodou tudo de uma vez. Não recomendo isso quando estamos configurando o Git e GitHub no RStudio. Tem várias etapas interativas e você tem que fazer cada uma delas com cuidado. Se você rodou tudo de uma vez, provavelmente o erro aconteceu por isso.

https://beatrizmilz.github.io/slidesR/git_rstudio/11-2021-ENCE.html#19

Oi Bea. Obrigado pela resposta.

Eu rodei esses comandos passo a passo conferindo as saídas.

Infelizmente chego na mesma resposta ao rodar usethis::use_github().

```#> Error in gh::gh():
! GitHub API error (404): Not Found

:heavy_multiplication_x: URL not found: https://api.github.com/user/repos

:information_source: Read more at
https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user```

Estou confirmando o token GITHUB_PAT no environ e também via gitcreds::gitcreds_get()$password, exatamente o mesmo.

Já gerei vários tokens para testar. O que tenho estranhado é a referencia a Token Scopes na saída de usethis::git_sitrep()

── GitHub user 
• Default GitHub host: 'https://github.com'
• Personal access token for 'https://github.com': '<discovered>'
• GitHub user: 'viniciovcl'
• Token scopes: ''
✖ Token has no scopes!
  `create_github_token()` defaults to the recommended scopes.
✖ Can't retrieve registered email addresses from GitHub.
  Consider re-creating your PAT with the 'user' or at least 'user:email' scope.

Tem alguma ideia se é por parte de alguma configuração git ou pelo endereço user/repos

Obrigado pela ajuda.

Adicionando a saída de gh::gh()

> gh::gh()
Error in gh::gh() : argumento "endpoint" ausente, sem padrão

Boa tarde.
Função usethis::use_github() funcionando. Criou o repositório do projeto.

Meu problema, aparentemente, era devido minha chave ssh.
Refiz a chave usando a documentação em: Generating a new SSH key and adding it to the ssh-agent - GitHub Docs.

Obrigado @beatrizmilz.

1 curtida