GitHub OAuth
GitHub OAuth Setup
Abschnitt betitelt „GitHub OAuth Setup“Anleitung zur Konfiguration von GitHub als OAuth-Provider.
GitHub OAuth App erstellen
Abschnitt betitelt „GitHub OAuth App erstellen“Schritt 1: Developer Settings öffnen
Abschnitt betitelt „Schritt 1: Developer Settings öffnen“- Gehe zu GitHub Developer Settings
- Klicke auf “OAuth Apps” im linken Menü
- Klicke auf “New OAuth App”
Schritt 2: App konfigurieren
Abschnitt betitelt „Schritt 2: App konfigurieren“Fülle das Formular aus:
| Feld | Wert |
|---|---|
| Application name | Dein App Name (z.B. “My App Auth”) |
| Homepage URL | https://deine-domain.de |
| Application description | Optional: Beschreibung deiner App |
| Authorization callback URL | https://auth.deine-domain.de/auth/callback |
Schritt 3: Credentials kopieren
Abschnitt betitelt „Schritt 3: Credentials kopieren“Nach dem Erstellen der App:
- Kopiere die Client ID
- Klicke auf “Generate a new client secret”
- Kopiere das Client Secret sofort (es wird nur einmal angezeigt!)
Cloudflare Secrets konfigurieren
Abschnitt betitelt „Cloudflare Secrets konfigurieren“Speichere die GitHub Credentials in Cloudflare:
# Provider auf GitHub setzenwrangler secret put OAUTH_PROVIDER# Eingabe: github
# GitHub Client IDwrangler secret put OAUTH_CLIENT_ID# Eingabe: deine-github-client-id
# GitHub Client Secretwrangler secret put OAUTH_CLIENT_SECRET# Eingabe: dein-github-client-secret
# Callback URL (muss mit GitHub App übereinstimmen)wrangler secret put OAUTH_REDIRECT_URI# Eingabe: https://auth.deine-domain.de/auth/callback
# Frontend URLwrangler secret put FRONTEND_URL# Eingabe: https://deine-domain.de
# JWT Secret (zufälliger String)wrangler secret put JWT_SECRET# Eingabe: ein-langes-zufälliges-secretGitHub API Berechtigungen
Abschnitt betitelt „GitHub API Berechtigungen“Der OAuth-Flow fordert folgende Berechtigungen an:
read:user- Zugriff auf öffentliche Profil-Informationenuser:email- Zugriff auf E-Mail-Adresse
Benutzerdaten
Abschnitt betitelt „Benutzerdaten“Nach erfolgreicher Authentifizierung erhältst du:
{ "userId": "github:123456", "name": "Max Mustermann", "email": "max@example.com", "avatar": "https://avatars.githubusercontent.com/u/123456", "provider": "github"}Lokale Entwicklung
Abschnitt betitelt „Lokale Entwicklung“Für lokale Entwicklung mit wrangler dev:
-
Erstelle eine separate GitHub OAuth App mit:
- Authorization callback URL:
http://localhost:8787/auth/callback
- Authorization callback URL:
-
Verwende separate Secrets für Development:
# Development Secrets (optional mit --env dev)wrangler secret put OAUTH_CLIENT_ID --env devwrangler secret put OAUTH_CLIENT_SECRET --env devwrangler secret put OAUTH_REDIRECT_URI --env dev# Eingabe: http://localhost:8787/auth/callbackNach der Konfiguration teste den OAuth-Flow:
- Öffne deine Frontend-App
- Klicke auf “Login”
- Du wirst zu GitHub weitergeleitet
- Autorisiere die App
- Du wirst zurück zu deiner App weitergeleitet mit einem JWT Token
Troubleshooting
Abschnitt betitelt „Troubleshooting“”Redirect URI mismatch”
Abschnitt betitelt „”Redirect URI mismatch”“Problem: GitHub zeigt einen Fehler wegen falscher Redirect URI.
Lösung:
- Prüfe, dass
OAUTH_REDIRECT_URIexakt mit der in GitHub konfigurierten URL übereinstimmt - Achte auf
httpvshttps, trailing slashes, etc.
”Invalid client_id or client_secret”
Abschnitt betitelt „”Invalid client_id or client_secret”“Problem: Authentifizierung schlägt fehl.
Lösung:
- Verifiziere dass Client ID und Secret korrekt kopiert wurden
- Prüfe auf zusätzliche Leerzeichen beim Kopieren
E-Mail-Adresse ist null
Abschnitt betitelt „E-Mail-Adresse ist null“Problem: User-Objekt enthält keine E-Mail.
Lösung:
- GitHub-User muss eine öffentliche E-Mail-Adresse haben
- Alternative: Fordere
user:emailScope an (bereits implementiert)
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- OAuth Übersicht - Mehr über OAuth-Flow
- API Endpoints - Verfügbare Auth-Endpoints
- Client Library - Integration in deine App