- Export enabledSocialProviders from @ketopath/auth: ['google'] when GOOGLE_CLIENT_ID/SECRET are both set, [] otherwise - sign-in and sign-up pages read enabledSocialProviders server-side and pass googleEnabled to their forms; the divider and button disappear when false - No changes to the Better Auth instance — the Google provider is still conditionally registered, this just keeps the UI honest about it docs/runbooks/google-oauth-setup.md walks through the Google Cloud Console flow end-to-end (project, consent screen, credentials, redirect URIs, env injection, verification, troubleshooting, prod considerations). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.7 KiB
4.7 KiB
Runbook — Configurazione Google OAuth
Procedura per abilitare il login "Continua con Google" su KetoPath.
Prerequisiti
- Account Google con accesso a Google Cloud Console
- Un dominio o un set di redirect URI di sviluppo
Passo 1 — Creare il progetto Google Cloud
- Apri https://console.cloud.google.com/
- In alto a sinistra, dropdown progetto → New Project
- Nome progetto:
KetoPath(o nome interno equivalente) - Crea — il progetto diventa attivo automaticamente
Passo 2 — Configurare l'OAuth consent screen
- Dal menu laterale: APIs & Services → OAuth consent screen
- Tipo utente: External (necessario per consentire login a chiunque, non solo al tuo workspace Google)
- Compila:
- App name: KetoPath
- User support email: la tua email
- App logo: opzionale per ora, obbligatorio per la pubblicazione
- App domain → Application home page:
https://ketopath.it(placeholder per dev) - Authorized domains: aggiungi
ketopath.ite qualunque dominio di produzione - Developer contact email: la tua email
- Save and continue
- Scopes: aggiungi
email,profile,openid(sono i tre default per OAuth 2.0) - Save and continue
- Test users: aggiungi le email di chi farà i test fino al go-live (massimo 100)
- Save and continue → Back to dashboard
Finché lo stato è "Testing" solo i test users possono accedere. Dopo il lancio pubblico, sottoponi l'app a verifica Google (se chiedi scope sensibili, può richiedere settimane). Per
email/profile/openidla verifica è automatica.
Passo 3 — Creare le credenziali OAuth
- Menu laterale: APIs & Services → Credentials
- Create credentials → OAuth client ID
- Application type: Web application
- Name:
KetoPath Web Client - Authorized redirect URIs — aggiungi tutte le seguenti:
http://localhost:3000/api/auth/callback/google(sviluppo locale)https://staging.ketopath.it/api/auth/callback/google(staging, se previsto)https://app.ketopath.it/api/auth/callback/google(produzione)
- Create
- Copia Client ID e Client Secret dalla dialog che appare. Il secret non sarà più recuperabile dopo questa schermata — se lo perdi devi rigenerarlo.
Passo 4 — Iniettare le credenziali nei .env
Aggiungi le seguenti righe a entrambi i file (devono essere identici):
apps/web/.env:
GOOGLE_CLIENT_ID=il-client-id-copiato.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=il-client-secret-copiato
apps/api/.env:
GOOGLE_CLIENT_ID=il-client-id-copiato.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=il-client-secret-copiato
I file
.envnon vanno mai committati. Sono già in.gitignore.
Passo 5 — Riavviare i dev server
pnpm dev:web # in un terminale
pnpm dev:api # in un altro
L'istanza Better Auth in @ketopath/auth rileva automaticamente la presenza
delle env vars e attiva il provider. La costante enabledSocialProviders
diventa ['google'] e il bottone "Continua con Google" appare nelle pagine
sign-in/sign-up.
Passo 6 — Verifica
- Apri http://localhost:3000/sign-up nel browser
- Verifica che il bottone "Continua con Google" sia visibile
- Cliccalo → vieni reindirizzato a
accounts.google.com - Scegli un account dalla lista test users
- Autorizza l'app
- Vieni reindirizzato a http://localhost:3000/ con l'utente loggato
- Tabella
usersin Postgres ha una nuova riga; tabellaaccountsha una riga conprovider_id = 'google'eaccount_id = <google sub>.
Troubleshooting
- Error: redirect_uri_mismatch: il redirect URI nei tuoi
.envnon corrisponde esattamente a quelli configurati in Google Cloud. Includere protocollo, hostname, porta e path:http://localhost:3000/api/auth/callback/google. - Error: access_denied: l'utente non è nei "test users" della consent screen. Aggiungilo dalla dashboard.
- Bottone non visibile:
enabledSocialProvidersvaluta entrambe le env vars al boot. Controlla che il server sia stato riavviato dopo aver scritto i.env. - Sessione non condivisa tra web e api:
BETTER_AUTH_SECRETdeve essere identico in entrambi i.env. Cambiarlo invalida tutte le sessioni esistenti.
Produzione
Per il deploy:
- Imposta
GOOGLE_CLIENT_IDeGOOGLE_CLIENT_SECRETcome secrets in Vercel (web) e Render/Fly.io (api). BETTER_AUTH_URLdeve essere l'URL pubblico del web (es.https://app.ketopath.it).- Aggiungi i redirect URI di produzione in Google Cloud Console prima del deploy, altrimenti il primo login fallirà.
- Pubblica la consent screen quando l'app è pronta per uscire dalla modalità Testing.