3.3 KiB
3.3 KiB
GOG Integration - Development Setup
⚠️ Wichtig: Temporäre Lösung für Development
Da wir eine Web/iOS App bauen, können wir keine CLI-Tools (wie gogdl) nutzen.
Für Production brauchen wir ein Backend mit OAuth Flow.
Wie bekomme ich GOG Credentials?
Option 1: Manuell aus Browser (Development)
-
Öffne GOG.com (eingeloggt)
https://www.gog.com -
Öffne Browser DevTools
- Chrome/Edge:
F12oderCmd+Option+I(Mac) - Firefox:
F12
- Chrome/Edge:
-
Gehe zu Network Tab
- Klicke auf "Network" / "Netzwerk"
- Aktiviere "Preserve log" / "Log beibehalten"
-
Lade eine GOG Seite neu
- Z.B. deine Library:
https://www.gog.com/account
- Z.B. deine Library:
-
Finde Request mit Bearer Token
- Suche nach Requests zu
gog.comodergalaxy-library.gog.com - Klicke auf einen Request
- Gehe zu "Headers" Tab
- Kopiere den
Authorization: Bearer ...Token
- Suche nach Requests zu
-
Kopiere User ID
- Suche nach Request zu
embed.gog.com/userData.json - Im Response findest du
"galaxyUserId": "123456789..." - Kopiere diese ID
- Suche nach Request zu
-
Trage in config.local.json ein
{ "steam": { ... }, "epic": {}, "gog": { "userId": "DEINE_GALAXY_USER_ID", "accessToken": "DEIN_BEARER_TOKEN" } }
Option 2: Backend OAuth Flow (Production - TODO)
Für Production implementieren wir einen OAuth Flow:
// Backend Endpoint (z.B. Vercel Function)
export async function POST(request) {
// 1. User zu GOG Auth redirecten
const authUrl = `https://auth.gog.com/auth?client_id=...&redirect_uri=...`;
// 2. Callback mit Code
// 3. Code gegen Access Token tauschen
const token = await fetch("https://auth.gog.com/token", {
method: "POST",
body: { code, client_secret: process.env.GOG_SECRET },
});
// 4. Token sicher speichern (z.B. encrypted in DB)
return { success: true };
}
API Endpoints
GOG Galaxy Library
GET https://galaxy-library.gog.com/users/{userId}/releases
Headers:
Authorization: Bearer {accessToken}
User-Agent: WhatToPlay/1.0
Response:
{
"items": [
{
"external_id": "1207658930",
"platform_id": "gog",
"date_created": 1234567890,
...
}
],
"total_count": 123,
"next_page_token": "..."
}
GOG User Data
GET https://embed.gog.com/userData.json
Headers:
Authorization: Bearer {accessToken}
Response:
{
"userId": "...",
"galaxyUserId": "...",
"username": "...",
...
}
Token Lebensdauer
- GOG Tokens laufen nach ca. 1 Stunde ab
- Für Development: Token regelmäßig neu kopieren
- Für Production: Refresh Token Flow implementieren
Nächste Schritte
- ✅ Development: Manueller Token aus Browser
- 📝 Backend: Vercel Function für OAuth
- 🔐 Backend: Token Refresh implementieren
- 📱 iOS: Secure Storage für Tokens (Keychain)
Troubleshooting
401 Unauthorized
- Token abgelaufen → Neu aus Browser kopieren
- Falscher Token → Prüfe
Authorization: Bearer ...
CORS Error
- Normal im Browser (darum brauchen wir Backend)
- Development: Scripts laufen in Node.js (kein CORS)
- Production: Backend macht die Requests
Leere Library
- Prüfe
userId- mussgalaxyUserIdsein, nichtuserId - Prüfe API Endpoint -
/users/{userId}/releases, nicht/games