Erläuterung zur Verwendung der Google Calendar API mit einem Service Account (JWT)
(kibua20.tistory.com)Es wird erläutert, wie man mit einer per OAuth 2.0 authentifizierten Methode unter Verwendung eines JWT (JSON Web Token) eine Service-Account-Authentifizierung für die Nutzung der Google API einsetzt und wie man über die Google Calendar API die Calendar-Events eines Benutzerkontos abruft.
Um einen Service Account zu verwenden, müssen die folgenden 5 Schritte durchgeführt werden.
-
Service Account in der Google API Console erstellen:
- Beim Erstellen eines Service Accounts werden eine Client-ID und ein Private Key zugewiesen.
-
JWT (Json Web Token) erstellen:
-
Header, Claim Set und Signature werden als base64urlsafe-Werte encodiert.
-
Im Fall von Python kann mit PyJWT ein JWT-String erzeugt werden.
-
-
Beim Google-Authentifizierungsserver mit dem JWT ein Token anfordern.
-
Der Google-Server liefert als Response ein Access Token zurück.
-
Mit dem Access Token die Google API aufrufen.
Ein wichtiger Punkt bei der Google Calendar API ist, dass das Benutzerkonto und das Service-Konto getrennte Konten sind. Deshalb muss im Google Calendar des Benutzerkontos eine Freigabeberechtigung für das Service-Konto hinzugefügt werden. Der Aufruf der Google Calendar API ist mit dem curl-Befehl oder mit Python requests möglich.
2 Kommentare
Hm … wenn man das tatsächlich in einem echten Service einsetzen wollte, müsste man wohl eine UX dafür bauen, damit Nutzer den Kalender freigeben können. Aber ob das überhaupt machbar ist?
Da das Kalender im Nutzerkonto freigegeben werden muss, scheint statt JWT eher ein OAuth2-Client passend zu sein.
Dies ist ein Beispiel, bei dem Gmail mit OAuth2 implementiert wurde.
https://kibua20.tistory.com/m/70