|
|
||
|---|---|---|
| .. | ||
| manual | ||
| .DS_Store | ||
| OutlookCalendar.php | ||
| auth.php | ||
| calendar.php | ||
| callback.php | ||
| config.php | ||
| readme.md | ||
readme.md
Outlook-Kalender Integration mit PHP
Dieses Projekt bietet eine einfache PHP-Integration zur Verwaltung von Terminen im Microsoft Outlook-Kalender über die Microsoft Graph API. Die Rechtevergabe für den unbeaufsichtegten Zugriff aud den Kalender des Users findet außschließlich mit die User statt.
Das Setzten des Rechtes offline_access vom User selbst macht dies möglich.
Funktionen
- OAuth2-Authentifizierung über Microsoft Identity Plattform
- Automatische Token-Aktualisierung (Refresh Token)
- Erstellung, Bearbeitung und Löschen von Kalender-Terminen
- Speicherung von Token pro Benutzer in
tokens.json
Projektstruktur
calendar.php: Einstiegspunkt zur Erstellung eines Beispiel-Termins.OutlookCalendar.php: Klasse für Interaktionen mit der Microsoft Graph API (Termine erstellen, aktualisieren, löschen, Token erneuern).config.php: Konfigurationsdatei mit Client-ID, Secret, Redirect-URL und weiteren API-relevanten Parametern.
Voraussetzungen
- PHP 7.4+
- cURL-Erweiterung
- Microsoft Azure AD App-Registrierung
Installation
-
Repository klonen
git clone <repo-url> cd <projektordner> -
Microsoft App registrieren
- Gehe zu Microsoft Azure App Registrations
- Registriere eine neue App
- Konfiguriere:
- Redirect URI: z.B.
https://deine-domain.de/callback.php - API-Berechtigungen:
offline_access,user.read,calendars.readwrite
- Redirect URI: z.B.
- Kopiere die Client-ID, Tenant-ID und das Client-Secret
-
Konfiguration anpassen Bearbeite die Datei
config.php:return [ 'client_id' => '<Deine Client-ID>', 'client_secret' => '<Dein Client-Secret>', 'redirect_uri' => '<Deine Redirect-URL>', 'scopes' => 'offline_access user.read calendars.readwrite', 'auth_url' => 'https://login.microsoftonline.com/<Deine Verzeichnis-ID (Mandant)>/oauth2/v2.0/authorize', 'token_url' => 'https://login.microsoftonline.com/<Deine Verzeichnis-ID (Mandant)>/oauth2/v2.0/token', 'graph_url' => 'https://graph.microsoft.com/v1.0', 'token_storage' => __DIR__ . '/tokens.json', ]; -
Authentifizierung implementieren Stelle sicher, dass ein separater Login-Flow (
auth.php) den OAuth2-Code verarbeitet und Tokens speichert. Dieser wird in__DIR__ . '/tokens.json'auf dem Webserver gespeoichert.{ "<UserMAILAdress>": { "access_token": "eyJ0....", "refresh_token": "1.Aa4A.....", "expires_in": 3790, "time_saved": 1757237005 } ... }
Beispiel: Alle Termin abrufen (default 10x)
- Nach erfolgreicher Authentifizierung kannst du
calendar.phpmit dem Parameteremailaufrufen:https://deine-domain.de/calendar.php?email=example@example.com - Dadurch werden die im Standard-Fall die letzten 10 Termin abgerufen und als JSON angezeigt.
Beispiel: Termin erstellen
- Nach erfolgreicher Authentifizierung kannst du
calendar.phpmit dem Parameteremailundcreateaufrufen:https://deine-domain.de/calendar.php?create=true&email=example@example.com - Dadurch wird ein Beispieltermin mit dem Dateum 25.6.25 im Outlook-Kalender des Benutzers erstellt.
Beispiel: Termin bearbeiten
- Nach erfolgreicher Authentifizierung kannst du
calendar.phpmit dem Parameteremail,updateundeventIdaufrufen:https://deine-domain.de/calendar.php?update=true&eventId=<EVENT ID>&email=example@example.com - Dadurch wird der Termin geändert und auf den 25.7.25 im Outlook-Kalender des Benutzers verschoben.
Beispiel: Termin löschen
- Nach erfolgreicher Authentifizierung kannst du
calendar.phpmit dem Parameteremail,deleteundeventIdaufrufen:https://deine-domain.de/calendar.php?delete=true&eventId=<EVENT ID>&email=example@example.com - Dadurch wird der Termin im Kalender des Benutzers gelöscht.
Hinweise
- Die Tokens werden in der Datei
tokens.jsongespeichert. Alternativ ist es möglich eine Dantenbank anzubinden. - Tokens werden automatisch aktualisiert, wenn sie abgelaufen sind.
- Die Datei
calendar.phpenthält ein Beispiel für die Event-Erstellung. Für produktive Nutzung sollte eine validierte Benutzerinteraktion erfolgen.
Lizenz
MIT