> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Configurar login OAuth

Google, Apple, GitHub, Microsoft e Twitter — um flag mais um par de cliente por fornecedor.

## Crie e verifique uma conta real

Autenticação significa provar quem está usando o aplicativo. Inicie Postgres e execute migrações usando primeiro o guia de banco de dados e depois deixe o servidor Web em execução. Abra http://localhost:3000/auth,, escolha a inscrição por e-mail/senha, digite seu nome, e-mail e senha e envie. Mantenha EMAIL_PROVIDER=local para este primeiro teste.

Quando um fluxo solicitar um código de e-mail, abra http://localhost:3000/mail-preview em outra guia do navegador, encontre a mensagem mais recente desse endereço e copie seu código de volta no formulário de login. Solicite um novo código se ele expirar. Essas mensagens ficam na caixa de saída local; verificar repetidamente uma caixa de entrada externa não os encontrará. Saia e entre novamente para confirmar se a conta apoiada pelo banco de dados funciona.

Se a inscrição relatar uma conexão com o banco de dados ou um erro de tabela ausente, conclua a configuração do banco de dados em vez de ativar o login social. Os botões Google, GitHub, Apple, X e Microsoft precisam de seu próprio aplicativo de provedor e configurações de retorno de chamada; habilite um somente após a conclusão do guia do provedor. Better Auth é o mecanismo padrão enviado e não precisa de uma conta de autenticação paga para login de email local.

[Inicie Postgres antes de criar uma conta](https://supastack.dev/pt/docs/web/database.md)

[Usar e solucionar problemas de códigos de login de e-mail](https://supastack.dev/pt/docs/web/setup-ai.md)

[Configurar login do Google](https://supastack.dev/pt/docs/web/setup-oauth.md)

[Adicionar o início de sessão com Google](https://supastack.dev/pt/docs/web/google-sign-in.md)

[Adicionar o início de sessão com GitHub](https://supastack.dev/pt/docs/web/github-sign-in.md)

[Adicionar o início de sessão com Apple](https://supastack.dev/pt/docs/web/apple-sign-in.md)


## Escolhe os métodos de login ativados

A base inclui email/palavra-passe, OTP e auth social configurável. O Better Auth possui identidade e sessões, enquanto a aplicação compõe a configuração de fornecedores e a entrega transacional de OTP.

Ativa apenas os fornecedores sociais que configuraste. Os segredos de cliente de fornecedores e o segredo de auth ficam no servidor.


## Liga a identidade a um workspace

Handlers autenticados resolvem o estado de sessão antes de aceder a registos do workspace. O aprovisionamento de workspace deve permanecer idempotente para que repetir um hook de ciclo de vida não crie registos de propriedade duplicados.


## Verifica o comportamento de sessão

Testa login, OTPs inválidos ou expirados, consumo de utilização única, logout e acesso anónimo negado. Testes com adaptador em memória cobrem a semântica do handler; a persistência em base de produção e callbacks reais de fornecedor exigem aceitação separada.


## Instalação e configuração

1. Define AUTH_SECRET com pelo menos 32 caracteres aleatórios — openssl rand -hex 32 serve.

2. Na consola de desenvolvedor de cada fornecedor, cria uma app OAuth e regista o URL de callback: {APP_URL}/api/auth/callback/<provider> no Better Auth (o AUTH_PROVIDER predefinido). Usa apps separadas para local e produção onde o fornecedor só permite um callback — docs/github-auth-setup.md percorre o fluxo GitHub de ponta a ponta.

3. Ativa o flag do fornecedor e define o seu par de cliente — AUTH_GOOGLE_ENABLED mais GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET, e o trio correspondente para Apple, GitHub, Microsoft ou Twitter. Ativar um flag sem as credenciais falha o arranque e nomeia a variável em falta.

4. A Microsoft é o único callback que difere por motor: /api/auth/callback/microsoft no Better Auth, /api/auth/callback/microsoft-entra-id no Auth.js.

```
AUTH_SECRET=<at-least-32-random-characters>
AUTH_PASSKEY_ENABLED=true
EARLY_ACCESS_INVITE_ONLY=false

AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=…
GOOGLE_CLIENT_SECRET=…

AUTH_GITHUB_ENABLED=true
GITHUB_CLIENT_ID=…
GITHUB_CLIENT_SECRET=…

# AUTH_APPLE_ENABLED / AUTH_MICROSOFT_ENABLED / AUTH_TWITTER_ENABLED
# follow the same pattern:
# MICROSOFT_CLIENT_ID=…  MICROSOFT_CLIENT_SECRET=…
# TWITTER_CLIENT_ID=…    TWITTER_CLIENT_SECRET=…

# Workspace connected accounts (Settings → Connections):
# CONNECTED_X_CLIENT_ID=          CONNECTED_X_CLIENT_SECRET=
# CONNECTED_GOOGLE_CLIENT_ID=     CONNECTED_GOOGLE_CLIENT_SECRET=
# CONNECTED_MICROSOFT_CLIENT_ID=  CONNECTED_MICROSOFT_CLIENT_SECRET=

# Callbacks to register (Better Auth):
#   {APP_URL}/api/auth/callback/google
#   {APP_URL}/api/auth/callback/apple
#   {APP_URL}/api/auth/callback/github
#   {APP_URL}/api/auth/callback/twitter
#   {APP_URL}/api/auth/callback/microsoft   (Auth.js: microsoft-entra-id)
```


## Fluxo de implementação

As contas externas do workspace são uma superfície diferente: os pares CONNECTED_X_*, CONNECTED_GOOGLE_* e CONNECTED_MICROSOFT_* alimentam Definições → Ligações, e os seus callbacks vivem em {APP_URL}/api/accounts/{x|google|microsoft}/callback. Um client id vazio deixa o fluxo de ligação desse fornecedor desativado — não reutilizes aí credenciais da app de login.

Os segredos de cliente dos fornecedores ficam só no servidor, tal como AUTH_SECRET — nunca em variáveis NEXT_PUBLIC_ ou EXPO_PUBLIC_.

Login a funcionar? Continua para Configurar IA.


## Verificação e resolução de problemas

Testa o primeiro login, uma sessão de regresso, um ecrã de consentimento cancelado e um fornecedor desativado. Uma mismatch de callback é a falha habitual — o URL registado tem de corresponder exatamente a APP_URL e ao callback id do motor, e a app precisa de reinício após mudanças de env.


Para continuar a configuração, leia [Configurar IA](https://supastack.dev/pt/docs/web/setup-ai.md).


## Seguinte

[Autenticação](https://supastack.dev/pt/docs/modules/auth.md)
