DSB-PlugIn/AddOn/Calender_Office365_User
olinet 0da5c08d5d AddOn/Calender_Office365_User/.DS_Store gelöscht 2025-09-07 12:37:48 +02:00
..
manual Add Manual V3 Add Picture 2025-09-07 12:35:16 +02:00
OutlookCalendar.php AddOn/Calender_Office365_User/OutlookCalendar.php aktualisiert 2025-09-07 12:00:35 +02:00
auth.php Add Office365 User Permission 2025-06-25 19:30:57 +02:00
calendar.php AddOn/Calender_Office365_User/calendar.php aktualisiert 2025-09-07 12:02:31 +02:00
callback.php Add Office365 User Permission 2025-06-25 19:30:57 +02:00
config.php AddOn/Calender_Office365_User/config.php aktualisiert 2025-09-07 12:37:34 +02:00
readme.md AddOn/Calender_Office365_User/readme.md aktualisiert 2025-09-07 11:59:46 +02:00

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

  1. Repository klonen

    git clone <repo-url>
    cd <projektordner>
    
  2. 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
    • Kopiere die Client-ID, Tenant-ID und das Client-Secret
  3. 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',
    ];
    
  4. 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)

  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 werden die im Standard-Fall die letzten 10 Termin abgerufen und als JSON angezeigt.

Beispiel: Termin erstellen

  1. Nach erfolgreicher Authentifizierung kannst du calendar.php mit dem Parameter email und create aufrufen:
    https://deine-domain.de/calendar.php?create=true&email=example@example.com
    
  2. Dadurch wird ein Beispieltermin mit dem Dateum 25.6.25 im Outlook-Kalender des Benutzers erstellt.

Beispiel: Termin bearbeiten

  1. Nach erfolgreicher Authentifizierung kannst du calendar.php mit dem Parameter email, update und eventId aufrufen:
    https://deine-domain.de/calendar.php?update=true&eventId=<EVENT ID>&email=example@example.com
    
  2. Dadurch wird der Termin geändert und auf den 25.7.25 im Outlook-Kalender des Benutzers verschoben.

Beispiel: Termin löschen

  1. Nach erfolgreicher Authentifizierung kannst du calendar.php mit dem Parameter email, delete und eventId aufrufen:
    https://deine-domain.de/calendar.php?delete=true&eventId=<EVENT ID>&email=example@example.com
    
  2. Dadurch wird der Termin im Kalender des Benutzers gelöscht.

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