Dokumentation
OAuth-Setup
Schrittweises Google- und GitHub-OAuth-Setup für Motoko Base — Provider-Apps anlegen, Callback-URLs konfigurieren und .env ausfüllen.
Google- und GitHub-Sign-in sind optional. Lassen Sie die OAuth-Env-Vars ungesetzt und die App startet normal — Social-Buttons auf /sign-in und /sign-up bleiben deaktiviert.
Einmal konfiguriert, übernimmt Better Auth den OAuth-Flow und speichert verknüpfte Konten in der Tabelle account. Callback-URLs müssen exakt zu Ihrer BETTER_AUTH_URL passen.
Bevor Sie starten
Stellen Sie sicher, dass diese Auth-Env-Vars bereits gesetzt sind:
# .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:3000Für die lokale Entwicklung verwenden Sie http://localhost:3000 für beide URL-Variablen. In Produktion setzen Sie sie auf Ihren öffentlichen HTTPS-Origin (z. B. https://app.example.com).
Erzeugen Sie BETTER_AUTH_SECRET, falls noch nicht geschehen:
openssl rand -base64 32Starten Sie den Dev-Server nach jeder Env-Änderung neu:
pnpm devGoogle OAuth
Schritt 1 — Google-Cloud-Projekt anlegen
- Öffnen Sie die Google Cloud Console
- Erstellen Sie ein neues Projekt (oder wählen Sie ein bestehendes)
- Gehen Sie zu APIs & Services → OAuth consent screen
- Wählen Sie External (oder Internal für Workspace-only Apps)
- Füllen Sie App-Name, Support-E-Mail und Entwicklerkontakt aus
- Scopes hinzufügen:
email,profileundopenid(Defaults reichen meist) - Testnutzer hinzufügen, wenn die App im Modus Testing ist
Schritt 2 — OAuth-Credentials erstellen
- Gehen Sie zu APIs & Services → Credentials
- Klicken Sie auf Create Credentials → OAuth client ID
- Anwendungstyp: Web application
- Benennen Sie ihn (z. B.
Motoko Base local)
Schritt 3 — Redirect-URI setzen
Unter Authorized redirect URIs hinzufügen:
{BETTER_AUTH_URL}/api/auth/callback/googleBeispiele:
| Environment | Redirect URI |
|---|---|
| Local | http://localhost:3000/api/auth/callback/google |
| Production | https://app.example.com/api/auth/callback/google |
Der Pfad muss genau /api/auth/callback/google sein — Better Auth registriert diese Route automatisch.
Optional Authorized JavaScript origins für die lokale Entwicklung hinzufügen:
http://localhost:3000Schritt 4 — Credentials in .env kopieren
Nach dem Erstellen des Clients zeigt Google eine Client ID und ein Client secret. Fügen Sie sie in .env ein:
GOOGLE_CLIENT_ID=123456789-abcdef.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxBeide Werte sind server-only — legen Sie sie nie auf NEXT_PUBLIC_*.
Schritt 5 — Lokal verifizieren
- Dev-Server neu starten:
pnpm dev - http://localhost:3000/sign-in öffnen
- Der Button Sign in with Google sollte aktiviert sein (nicht ausgegraut)
- Klicken — Sie sollten zu Google und zurück zu
/dashboardgelangen
Bleibt der Button deaktiviert, prüfen Sie, dass beide GOOGLE_CLIENT_ID und GOOGLE_CLIENT_SECRET gesetzt und nicht leer sind.
Google-Troubleshooting
| 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
Schritt 1 — GitHub OAuth App anlegen
- Öffnen Sie GitHub Developer Settings → OAuth Apps
- Klicken Sie auf New OAuth App
- Ausfüllen:
- Application name — z. B.
Motoko Base - Homepage URL — Ihre App-URL (lokal:
http://localhost:3000) - Authorization callback URL — siehe Schritt 2
- Application name — z. B.
Schritt 2 — Callback-URL setzen
Die Authorization callback URL muss sein:
{BETTER_AUTH_URL}/api/auth/callback/githubBeispiele:
| Environment | Callback URL |
|---|---|
| Local | http://localhost:3000/api/auth/callback/github |
| Production | https://app.example.com/api/auth/callback/github |
Klicken Sie auf Register application.
Schritt 3 — Client Secret erzeugen
- Auf der OAuth-App-Seite auf Generate a new client secret klicken
- Client ID und Client secret sofort kopieren — das Secret wird nur einmal angezeigt
Schritt 4 — Credentials in .env kopieren
GITHUB_CLIENT_ID=Iv1.xxxxxxxxxxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxBeide Werte sind server-only.
Schritt 5 — Lokal verifizieren
- Dev-Server neu starten:
pnpm dev - http://localhost:3000/sign-in öffnen
- Der Button Sign in with GitHub sollte aktiviert sein
- Klicken — die App autorisieren und auf
/dashboardlanden
GitHub Apps vs OAuth Apps
Motoko Base verwendet eine Standard-OAuth App (keine GitHub App). Wenn Sie stattdessen eine GitHub App nutzen, stellen Sie sicher, dass Account permissions → Email addresses auf Read-only steht, damit Better Auth die verifizierte E-Mail des Users lesen kann.
GitHub-Troubleshooting
| 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 |
Produktions-Checkliste
Nutzen Sie diese Checkliste beim Deploy von OAuth auf Staging oder Produktion:
-
Kanonische URLs setzen
BETTER_AUTH_URL=https://app.example.com NEXT_PUBLIC_APP_URL=https://app.example.com -
Produktions-Callback-URLs in Google Console und GitHub-OAuth-App-Einstellungen hinzufügen (lokale URIs behalten, wenn Sie weiter lokal entwickeln)
-
Optional — Extra-Origins für Preview-Deployments:
BETTER_AUTH_TRUSTED_ORIGINS=https://staging.example.com,https://*.vercel.app -
Neu starten / neu deployen nach Env-Änderungen
-
Beide Provider auf der Live-URL testen — anmelden, abmelden und bestätigen, dass die Session bestehen bleibt
Wo OAuth im Code verdrahtet ist
Meist reichen Env-Vars. Zum Anpassen des Verhaltens diese Dateien bearbeiten:
| 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 |
OAuth-Secrets gehören nie in TypeScript-Config-Dateien — nur in .env.
Nächste Schritte
Better Auth — Vollständiger Auth-Überblick, Sessions, geschützte Routen und Dateikarte.
Umgebungsvariablen — Alle auth-bezogenen Env-Vars an einem Ort.