Pular para o conteúdo
supastack
Explorar a documentação
WebTanStack Start

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /pt/docs/web/github-sign-in.md (or send Accept: text/markdown).

Adicionar o início de sessão com GitHub

Crie uma OAuth App do GitHub por ambiente e ligue «Continuar com GitHub» à app.

Passo a passo para iniciantes

Pré-requisitos: a app web a correr em local e um banco de dados migrado para contas reais. Precisa de uma conta GitHub — a que possui o repositório serve. Gratuito, cerca de 5 minutos por ambiente.

Terminologia rápida: uma OAuth App do GitHub é o registo que permite ao GitHub iniciar a sessão dos utilizadores por si. Ao contrário da maioria dos provedores, uma OAuth App permite exatamente uma Authorization callback URL — logo, local (http://localhost:3000/…) e produção (https://yourdomain.com/…) precisam cada uma da sua própria app. Reutilizar uma app alternando o callback entre ambientes parte um lado de cada vez.

1. Crie uma OAuth App local nas Developer settings da sua conta. 2. Copie o Client ID e gere um Client Secret. 3. Defina os três valores de ambiente e reinicie. 4. Repita uma vez com o seu domínio real antes de ir para o ar.

Criar a OAuth App local

1. Abra github.com e inicie sessão. Clique na sua foto de perfil no canto superior direito → Settings.

2. Desça até ao fim da barra lateral esquerda e abra Developer settings → OAuth Apps → New OAuth App.

3. Application name: algo como supastack local — os utilizadores veem este nome na página de autorização do GitHub. Homepage URL: http://localhost:3000. Authorization callback URL: http://localhost:3000/api/auth/callback/github. Clique em Register application.

4. Na página da app, copie o Client ID, clique em Generate a new client secret e copie o segredo de imediato — o GitHub só o mostra uma vez, embora possa sempre gerar outro.

Criar a OAuth App de produção

Repita os mesmos passos de New OAuth App com o nome do produto, Homepage URL https://yourdomain.com e Authorization callback URL https://yourdomain.com/api/auth/callback/github.

Guarde as credenciais de cada app no seu próprio ambiente: o par da app local vive em apps/web/.env.local, o par da app de produção no cofre de segredos do seu host. O segredo local nunca deve chegar à configuração de produção nem vice-versa.

Adicionar os valores à app

Preencha as três linhas abaixo em apps/web/.env.local usando as credenciais da app local. AUTH_GITHUB_ENABLED=true ativa o botão; o par identifica a OAuth App.

O client secret fica apenas no servidor — nunca em variáveis NEXT_PUBLIC_/EXPO_PUBLIC_ e nunca no Git. Reinicie o servidor de desenvolvimento depois de editar.

Não reutilize valores GITHUB_APP_* que possa ver noutro lado — pertencem a uma integração de GitHub App sem relação, não ao início de sessão de utilizadores. O docs/github-auth-setup.md do kit percorre todo o fluxo de ponta a ponta se quiser uma segunda referência.

# apps/web/.env.local — from the LOCAL OAuth App
AUTH_GITHUB_ENABLED=true
GITHUB_CLIENT_ID=your-oauth-app-client-id
GITHUB_CLIENT_SECRET=your-oauth-app-secret

Verificar e resolver problemas

Abra http://localhost:3000/auth e clique no botão do GitHub. Autorize a app em github.com e confirme que regressa com sessão iniciada.

Enquanto AUTH_GITHUB_ENABLED=true não estiver definido, a opção GitHub em /auth permanece visível mas desativada — verifique os nomes do ficheiro env e reinicie. Definir a flag sem GITHUB_CLIENT_ID e GITHUB_CLIENT_SECRET faz o arranque falhar e nomeia a variável em falta.

Um callback mal correspondido é a falha habitual: a Authorization callback URL da app deve ser exatamente {APP_URL}/api/auth/callback/github — protocolo, host, porta e caminho. Um erro redirect_uri após a implementação geralmente significa que o pedido atingiu as credenciais da app local enquanto APP_URL diz produção, ou o contrário.

Reinicie o servidor de desenvolvimento após cada edição do env; os valores só são lidos no arranque.