- Change .replace(tzinfo=BERLIN_TZ) to BERLIN_TZ.localize() for correct pytz TZ handling - Update Phase 4 to use proper TZ localization for adv_ts - Add documentation section on correct Advoware timestamp handling - Add .gitignore, GOOGLE_SETUP_README.md, and check_db.py utility
3.8 KiB
3.8 KiB
Google Service Account Setup für Advoware Calendar Sync
Übersicht
Dieser Calendar Sync verwendet ausschließlich Google Service Accounts für die Authentifizierung. Kein OAuth, kein Browser-Interaktion - perfekt für Server-Umgebungen!
Voraussetzungen
- Google Cloud Console Zugang
- Berechtigung zum Erstellen von Service Accounts
- (Optional) Google Workspace Admin Zugang für Domain-wide Delegation
Schritt 1: Google Cloud Console aufrufen
- Gehen Sie zu: https://console.cloud.google.com/
- Melden Sie sich mit Ihrem Google-Konto an
- Wählen Sie ein bestehendes Projekt aus oder erstellen Sie ein neues
Schritt 2: Google Calendar API aktivieren
- Klicken Sie auf "APIs & Dienste" → "Bibliothek"
- Suchen Sie nach "Google Calendar API"
- Klicken Sie auf "Google Calendar API" → "Aktivieren"
Schritt 3: Service Account erstellen
- Gehen Sie zu "IAM & Verwaltung" → "Service-Konten"
- Klicken Sie auf "+ Service-Konto erstellen"
- Grundlegende Informationen:
- Service-Kontoname:
advoware-calendar-sync - Beschreibung:
Service Account für Advoware-Google Calendar Synchronisation - E-Mail: wird automatisch generiert
- Service-Kontoname:
- Klicken Sie auf "Erstellen und fortfahren"
Schritt 4: Berechtigungen zuweisen
- Rolle zuweisen: Wählen Sie eine der folgenden Optionen:
- Für volle Zugriffe:
Editor - Für eingeschränkte Zugriffe:
Calendar API Admin(falls verfügbar)
- Für volle Zugriffe:
- Klicken Sie auf "Fertig"
Schritt 5: JSON-Schlüssel erstellen und installieren
- Klicken Sie auf das neu erstellte Service-Konto
- Gehen Sie zum Tab "Schlüssel"
- Klicken Sie auf "Schlüssel hinzufügen" → "Neuen Schlüssel erstellen"
- Wählen Sie "JSON" als Schlüsseltyp
- Klicken Sie auf "Erstellen"
- Die JSON-Datei wird automatisch heruntergeladen
- Benennen Sie die Datei um zu:
service-account.json - Kopieren Sie die Datei nach:
/opt/motia-app/service-account.json - Stellen Sie sichere Berechtigungen ein:
chmod 600 /opt/motia-app/service-account.json
Schritt 6: Domain-wide Delegation (nur für Google Workspace)
Falls Sie Google Workspace verwenden und auf Kalender anderer Benutzer zugreifen möchten:
- Gehen Sie zurück zum Service-Konto
- Aktivieren Sie "Google Workspace Domain-wide Delegation"
- Notieren Sie sich die "Unique ID" des Service-Kontos
- Gehen Sie zu Google Admin Console: https://admin.google.com/
- "Sicherheit" → "API-Berechtigungen"
- "Domain-wide Delegation" → "API-Clienten verwalten"
- Fügen Sie die Unique ID hinzu
- Berechtigungen:
https://www.googleapis.com/auth/calendar
Schritt 7: Testen
Nach dem Setup können Sie den Calendar Sync testen:
# Vollständige Termindetails synchronisieren
curl -X POST http://localhost:3000/api/flows/advoware_cal_sync \
-H "Content-Type: application/json" \
-d '{"full_content": true}'
# Nur "blocked" Termine synchronisieren (weniger Details)
curl -X POST http://localhost:3000/api/flows/advoware_cal_sync \
-H "Content-Type: application/json" \
-d '{"full_content": false}'
Wichtige Hinweise
- ✅ Kein Browser nötig - läuft komplett server-seitig
- ✅ Automatisch - einmal setup, läuft für immer
- ✅ Sicher - Service Accounts haben granulare Berechtigungen
- ✅ Skalierbar - perfekt für Produktionsumgebungen
Fehlerbehebung
- "service-account.json nicht gefunden": Überprüfen Sie den Pfad
/opt/motia-app/service-account.json - "Access denied": Überprüfen Sie die Berechtigungen des Service Accounts
- "API not enabled": Stellen Sie sicher, dass Calendar API aktiviert ist
- "Invalid credentials": Überprüfen Sie die service-account.json Datei
Sicherheit
- Halten Sie die
service-account.jsonDatei sicher und versionieren Sie sie nicht - Verwenden Sie IAM-Rollen in GCP-Umgebungen statt JSON-Keys
- Rotiere Service Account Keys regelmäßig