Google OAuth einrichten
Google-Login ermöglicht Content-Redakteuren den Zugang zum Admin — ohne eigenen GitHub-Account.
Commits laufen weiterhin über den zentralen GITHUB_TOKEN.
Zwei Rollen, ein Admin
- GitHub-Login → Admin (voller Zugriff, alle Seiten)
- Google-Login → Redakteur (optional auf bestimmte Seiten eingeschränkt)
- Alle Commits gehen über
GITHUB_TOKEN— Google-User brauchen keinen GitHub-Account
1. OAuth-App in der GCP Console anlegen
1. console.cloud.google.com aufrufen
2. Neues Projekt erstellen (oder bestehendes wählen)
3. APIs & Dienste → OAuth-Zustimmungsbildschirm
- Nutzertyp: Extern
- App-Name, E-Mail-Adresse ausfüllen
- Scopes: email, profile, openid hinzufügen
- Test-Nutzer: deine E-Mail eintragen (solange App nicht verifiziert)
4. APIs & Dienste → Anmeldedaten → + Anmeldedaten erstellen → OAuth-Client-ID
- Anwendungstyp: Webanwendung
- Name: Setzkasten CMS
- Autorisierte Weiterleitungs-URIs: → siehe unten 2. Callback-URL eintragen
In den OAuth-Client-Einstellungen unter Autorisierte Weiterleitungs-URIs:
# Produktion
https://deine-seite.de/api/setzkasten/auth/callback
# Lokale Entwicklung (separate Client-ID empfohlen)
http://localhost:4321/api/setzkasten/auth/callback 3. Credentials als Env-Variablen setzen
Client-ID und Secret aus der GCP Console kopieren und als Umgebungsvariablen eintragen:
# .env (lokal) / Environment Variables (Vercel/Netlify/Cloudflare)
GOOGLE_CLIENT_ID=1234567890-abc123.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxxxxxx Vercel
Project → Settings → Environment Variables
Netlify
Site → Environment variables
Cloudflare
Pages → Settings → Environment variables
4. Setzkasten-Integration konfigurieren
Google neben GitHub in der Astro-Config aktivieren:
// astro.config.mjs
import setzkasten from '@setzkasten-cms/astro'
export default defineConfig({
integrations: [
setzkasten({
// GitHub bleibt für den Admin-Login
github: {
clientId: process.env.GITHUB_CLIENT_ID,
clientSecret: process.env.GITHUB_CLIENT_SECRET,
},
// Google für Content-Redakteure
google: {
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
},
// Wer sich einloggen darf (gilt für beide Provider)
allowedEmails: ['admin@example.com'],
storage: { /* ... */ },
}),
],
}) 5. Redakteure freischalten
Google-User müssen explizit freigeschaltet werden — entweder über die Admin-UI oder in der statischen Config:
Option A: Admin-UI
Als GitHub-Admin einloggen → Dashboard → Redakteure verwalten → E-Mail hinzufügen und optional Seiten einschränken. Änderungen sind sofort wirksam, kein Redeploy nötig.
Option B: Config-Datei
Statisch in setzkasten.config.ts definieren — sinnvoll wenn
die Redakteursliste stabil ist oder per Git verwaltet werden soll.
// setzkasten.config.ts — Seiten-Einschränkungen pro Redakteur
export default defineConfig({
auth: {
providers: ['github', 'google'],
editors: [
// Darf alle Seiten bearbeiten
{ email: 'redakteur@example.com' },
// Nur bestimmte Seiten
{ email: 'blog-autor@example.com', pages: ['blog', 'news'] },
],
},
// ...
}) Häufige Fehler
redirect_uri_mismatch
Ursache: Callback-URL in der GCP Console stimmt nicht exakt mit der Produktions-URL überein.
Fix: URL in den OAuth-Client-Einstellungen prüfen — Protokoll, Domain und Pfad müssen identisch sein.
access_denied
Ursache: Die E-Mail ist weder in allowedEmails noch in _editors.json eingetragen.
Fix: E-Mail als Test-Nutzer in der GCP Console eintragen UND in der Admin-UI oder Config freischalten.
App nicht verifiziert (Warnung)
Ursache: Google zeigt eine Warnung, weil die OAuth-App noch nicht verifiziert ist.
Fix: Für interne Tools: "Erweitert → Zu [App] gehen" klicken. Oder App in der GCP Console verifizieren.
invalid_client
Ursache: GOOGLE_CLIENT_ID oder GOOGLE_CLIENT_SECRET fehlt oder ist falsch.
Fix: Env-Variablen auf dem Hosting-Provider prüfen. Nach Änderung Redeploy nötig.