# 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. ## 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 1. **Repository klonen** ```bash git clone cd ``` 2. **Microsoft App registrieren** - Gehe zu [Microsoft Azure App Registrations](https://portal.azure.com/) - Registriere eine neue App - Konfiguriere: - **Redirect URI**: z. B. `https://deine-domain.de/callback.php` - **API-Berechtigungen**: `offline_access`, `user.read`, `calendars.readwrite` - Kopiere die **Client-ID** und das **Client-Secret** 3. **Konfiguration anpassen** Bearbeite die Datei `config.php`: ```php return [ 'client_id' => '', 'client_secret' => '', 'redirect_uri' => '', 'scopes' => 'offline_access user.read calendars.readwrite', ... ]; ``` 4. **Authentifizierung implementieren** Stelle sicher, dass ein separater Login-Flow (`auth.php`) den OAuth2-Code verarbeitet und Tokens speichert (nicht im Projekt enthalten, aber notwendig). ## Beispiel: Termin erstellen 1. Nach erfolgreicher Authentifizierung kannst du `calendar.php` mit dem Parameter `email` aufrufen: ``` https://deine-domain.de/calendar.php?email=example@example.com ``` 2. Dadurch wird ein Beispieltermin mit Start- und Endzeit im Outlook-Kalender des Benutzers erstellt. ## Hinweise - Die Tokens werden in der Datei `tokens.json` gespeichert. Alternativ ist es möglich eine Dantenbank anzubinden. - Tokens werden automatisch aktualisiert, wenn sie abgelaufen sind. - Die Datei `calendar.php` enthält ein Beispiel für die Event-Erstellung. Für produktive Nutzung sollte eine validierte Benutzerinteraktion erfolgen. ## Lizenz MIT