> ## 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

# Configura l'accesso OAuth

Google, Apple, GitHub, Microsoft e Twitter — un flag più una coppia client per ciascuno.

## Crea e verifica un account reale

Autenticarsi significa dimostrare chi sta utilizzando l'app. Avviare Postgres ed eseguire prima le migrazioni utilizzando la guida del database, quindi lasciare in esecuzione il server Web. Apri http://localhost:3000/auth, scegli la registrazione tramite e-mail/password, inserisci il tuo nome, e-mail e password e invia. Conserva EMAIL_PROVIDER=local per questo primo test.

Quando un flusso richiede un codice email, apri http://localhost:3000/mail-preview in un'altra scheda del browser, trova il messaggio più recente per quell'indirizzo e copiane nuovamente il codice nel modulo di accesso. Richiedi un nuovo codice se scade. Questi messaggi rimangono nella posta in uscita locale; controllando ripetutamente una casella di posta esterna non li troverà. Esci, quindi accedi nuovamente per verificare che l'account supportato dal database funzioni.

Se la registrazione segnala una connessione al database o un errore di tabella mancante, completa la configurazione del database invece di abilitare l'accesso social. I pulsanti Google, GitHub, Apple, X e Microsoft necessitano della propria applicazione provider e delle impostazioni di richiamata; abilitarne uno solo dopo aver completato la guida del fornitore. Better Auth è il motore predefinito fornito e non richiede un account di autenticazione a pagamento per l'accesso e-mail locale.

[Avvia Postgres prima di creare un account](https://supastack.dev/it/docs/web/database.md)

[Utilizzo e risoluzione dei problemi relativi ai codici di accesso e-mail](https://supastack.dev/it/docs/web/setup-ai.md)

[Configura accesso Google](https://supastack.dev/it/docs/web/setup-oauth.md)

[Aggiungi l'accesso con Google](https://supastack.dev/it/docs/web/google-sign-in.md)

[Aggiungi l'accesso con GitHub](https://supastack.dev/it/docs/web/github-sign-in.md)

[Aggiungi l'accesso con Apple](https://supastack.dev/it/docs/web/apple-sign-in.md)


## Scegli i metodi di login abilitati

La base include email/password, OTP e auth social configurabile. Better Auth possiede identità e sessioni, mentre l'applicazione compone la configurazione dei provider e la consegna transazionale degli OTP.

Abilita solo i provider social che hai configurato. I segreti client dei provider e il segreto di auth restano sul server.


## Collega l'identità a un workspace

Gli handler autenticati risolvono lo stato della sessione prima di accedere ai record del workspace. Il provisioning del workspace deve restare idempotente così che ripetere un hook del ciclo di vita non crei record di possesso duplicati.


## Verifica il comportamento della sessione

Testa login, OTP non validi o scaduti, consumo monouso, logout e accesso anonimo negato. I test con adattatore in memoria coprono la semantica degli handler; la persistenza del database di produzione e i callback reali dei provider richiedono accettazione separata.


## Installazione e configurazione

1. Imposta AUTH_SECRET su almeno 32 caratteri casuali — openssl rand -hex 32 va bene.

2. Nella console sviluppatore di ogni provider, crea un'app OAuth e registra l'URL di callback: {APP_URL}/api/auth/callback/<provider> sotto Better Auth (l'AUTH_PROVIDER predefinito). Usa app separate per locale e produzione dove il provider consente un solo callback — docs/github-auth-setup.md guida il flusso GitHub end to end.

3. Attiva il flag del provider e imposta la sua coppia client — AUTH_GOOGLE_ENABLED più GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET, e il trio corrispondente per Apple, GitHub, Microsoft o Twitter. Abilitare un flag senza le sue credenziali fa fallire l'avvio e nomina la variabile mancante.

4. Microsoft è l'unico callback che cambia per motore: /api/auth/callback/microsoft sotto Better Auth, /api/auth/callback/microsoft-entra-id sotto 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)
```


## Flusso di implementazione

Gli account esterni del workspace sono una superficie diversa: le coppie CONNECTED_X_*, CONNECTED_GOOGLE_* e CONNECTED_MICROSOFT_* alimentano Impostazioni → Connessioni, e i loro callback vivono sotto {APP_URL}/api/accounts/{x|google|microsoft}/callback. Un client id vuoto lascia il flusso di connessione di quel provider disabilitato — non riutilizzare lì le credenziali dell'app di accesso.

I client secret dei provider restano solo server, esattamente come AUTH_SECRET — mai nelle variabili NEXT_PUBLIC_ o EXPO_PUBLIC_.

L'accesso funziona? Continua con Configura l'AI.


## Verifica e risoluzione dei problemi

Testa il primo accesso, una sessione di ritorno, una schermata di consenso annullata e un provider disabilitato. Un callback non corrispondente è il fallimento abituale — l'URL registrato deve corrispondere esattamente ad APP_URL e all'id di callback del motore, e l'app richiede un riavvio dopo i cambi env.


Per continuare la configurazione, leggi [Configura l'AI](https://supastack.dev/it/docs/web/setup-ai.md).


## Successivo

[Autenticazione](https://supastack.dev/it/docs/modules/auth.md)
