Documentation
Configuration OAuth
Configuration pas à pas OAuth Google et GitHub pour Motoko Base — créez les apps fournisseur, configurez les callback URLs et renseignez le .env.
La connexion Google et GitHub est optionnelle. Laissez les variables OAuth non définies et l’app démarre normalement — les boutons sociaux sur /sign-in et /sign-up restent désactivés.
Une fois configuré, Better Auth gère le flux OAuth et stocke les comptes liés dans la table account. Les callback URLs doivent correspondre exactement à votre BETTER_AUTH_URL.
Avant de commencer
Assurez-vous que ces variables d’auth sont déjà définies :
# .env or .env.local
DATABASE_URL=postgresql://...
BETTER_AUTH_SECRET=your-generated-secret
BETTER_AUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000Pour le développement local, utilisez http://localhost:3000 pour les deux variables d’URL. En production, définissez-les sur votre origine HTTPS publique (ex. https://app.example.com).
Générez BETTER_AUTH_SECRET si ce n’est pas déjà fait :
openssl rand -base64 32Redémarrez le serveur de développement après toute modification de variable d’environnement :
pnpm devGoogle OAuth
Étape 1 — Créer un projet Google Cloud
- Ouvrez la Google Cloud Console
- Créez un nouveau projet (ou sélectionnez-en un existant)
- Allez dans APIs & Services → OAuth consent screen
- Choisissez External (ou Internal pour les apps Workspace uniquement)
- Remplissez le nom de l’app, l’e-mail de support et le contact développeur
- Ajoutez les scopes :
email,profileetopenid(les defaults suffisent souvent) - Ajoutez des utilisateurs de test si l’app est en mode Testing
Étape 2 — Créer des identifiants OAuth
- Allez dans APIs & Services → Credentials
- Cliquez sur Create Credentials → OAuth client ID
- Type d’application : Web application
- Nommez-le (ex.
Motoko Base local)
Étape 3 — Définir le redirect URI
Sous Authorized redirect URIs, ajoutez :
{BETTER_AUTH_URL}/api/auth/callback/googleExemples :
| Environment | Redirect URI |
|---|---|
| Local | http://localhost:3000/api/auth/callback/google |
| Production | https://app.example.com/api/auth/callback/google |
Le chemin doit être exactement /api/auth/callback/google — Better Auth enregistre cette route automatiquement.
Ajoutez optionnellement des Authorized JavaScript origins pour le développement local :
http://localhost:3000Étape 4 — Copier les identifiants dans .env
Après création du client, Google affiche un Client ID et un Client secret. Ajoutez-les à .env :
GOOGLE_CLIENT_ID=123456789-abcdef.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxLes deux valeurs sont serveur uniquement — ne les mettez jamais sur NEXT_PUBLIC_*.
Étape 5 — Vérifier en local
- Redémarrez le serveur de développement :
pnpm dev - Ouvrez http://localhost:3000/sign-in
- Le bouton Sign in with Google doit être activé (pas grisé)
- Cliquez — vous devez être redirigé vers Google, puis revenir sur
/dashboard
Si le bouton reste désactivé, vérifiez que les deux GOOGLE_CLIENT_ID et GOOGLE_CLIENT_SECRET sont définis et non vides.
Dépannage Google
| Problem | Fix |
|---|---|
redirect_uri_mismatch | Redirect URI in Google Console must match {BETTER_AUTH_URL}/api/auth/callback/google exactly (scheme, host, port, path) |
| Button disabled | Both GOOGLE_* vars must be set; restart dev server |
access_denied in Testing mode | Add your Google account as a test user on the consent screen |
| Works locally, fails in production | Add production redirect URI and set BETTER_AUTH_URL to your live domain |
GitHub OAuth
Étape 1 — Créer une GitHub OAuth App
- Ouvrez GitHub Developer Settings → OAuth Apps
- Cliquez sur New OAuth App
- Remplissez :
- Application name — ex.
Motoko Base - Homepage URL — l’URL de votre app (local :
http://localhost:3000) - Authorization callback URL — voir l’étape 2
- Application name — ex.
Étape 2 — Définir le callback URL
Le Authorization callback URL doit être :
{BETTER_AUTH_URL}/api/auth/callback/githubExemples :
| Environment | Callback URL |
|---|---|
| Local | http://localhost:3000/api/auth/callback/github |
| Production | https://app.example.com/api/auth/callback/github |
Cliquez sur Register application.
Étape 3 — Générer un client secret
- Sur la page de l’OAuth app, cliquez sur Generate a new client secret
- Copiez immédiatement le Client ID et le Client secret — le secret n’est affiché qu’une fois
Étape 4 — Copier les identifiants dans .env
GITHUB_CLIENT_ID=Iv1.xxxxxxxxxxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLes deux valeurs sont serveur uniquement.
Étape 5 — Vérifier en local
- Redémarrez le serveur de développement :
pnpm dev - Ouvrez http://localhost:3000/sign-in
- Le bouton Sign in with GitHub doit être activé
- Cliquez — autorisez l’app, puis atterrissez sur
/dashboard
GitHub Apps vs OAuth Apps
Motoko Base utilise une OAuth App standard (pas une GitHub App). Si vous utilisez une GitHub App à la place, assurez-vous que Account permissions → Email addresses est en Read-only pour que Better Auth puisse lire l’e-mail vérifié de l’utilisateur.
Dépannage GitHub
| Problem | Fix |
|---|---|
redirect_uri mismatch | Callback URL must be {BETTER_AUTH_URL}/api/auth/callback/github exactly |
| Button disabled | Both GITHUB_* vars must be set; restart dev server |
| Missing email / sign-in fails | For GitHub Apps, enable Email addresses read permission; OAuth Apps include email by default |
| Works locally, fails in production | Update callback URL in GitHub settings and set production BETTER_AUTH_URL |
Checklist production
Utilisez cette checklist lors du déploiement OAuth en staging ou production :
-
Définir les URLs canoniques
BETTER_AUTH_URL=https://app.example.com NEXT_PUBLIC_APP_URL=https://app.example.com -
Ajouter les callback URLs de production dans Google Console et les paramètres de l’OAuth app GitHub (gardez les URI locales si vous développez encore en local)
-
Optionnel — origines supplémentaires pour les déploiements preview :
BETTER_AUTH_TRUSTED_ORIGINS=https://staging.example.com,https://*.vercel.app -
Redémarrer / redéployer après les changements d’env
-
Tester les deux fournisseurs sur l’URL live — se connecter, se déconnecter et confirmer que la session persiste
Où OAuth est câblé dans le code
En général, les variables d’environnement suffisent. Pour personnaliser le comportement, éditez ces fichiers :
| File | Purpose |
|---|---|
src/lib/auth/auth.ts | Registers socialProviders.google and socialProviders.github |
src/lib/auth/social.ts | isGoogleAuthConfigured() / isGitHubAuthConfigured() |
src/app/sign-in/sign-in-form.tsx | Google/GitHub sign-in handlers |
src/app/sign-up/sign-up-form.tsx | Google/GitHub sign-up handlers |
src/app/sign-in/page.tsx | Passes enabled flags to the form |
Les secrets OAuth n’appartiennent jamais aux fichiers TypeScript de config — uniquement à .env.
Prochaines étapes
Better Auth — Vue d’ensemble complète de l’auth, sessions, routes protégées et carte des fichiers.
Variables d’environnement — Toutes les variables d’auth au même endroit.