DSB-PlugIn/AddOn/Calender_Office365/readme.md

4.4 KiB
Raw Blame History

📅 GraphCalendar Microsoft Graph API PHP Kalender-Client

Diese PHP-Klasse ermöglicht den Zugriff auf Microsoft Outlook-Kalender über die Microsoft Graph API. Du kannst damit Events erstellen, abrufen, aktualisieren und löschen auch inklusive Microsoft Teams-Meetings.


Funktionen

  • 🔐 Authentifizierung über Client-Credentials (Client-ID & Secret)
  • 📥 Abrufen aller oder einzelner Kalendereinträge
  • ✍️ Erstellen von Terminen (inkl. Teams-Link)
  • 🔄 Aktualisieren bestehender Termine
  • Löschen von Terminen

🔧 Voraussetzungen

  • PHP ≥ 7.2
  • cURL-Support in PHP aktiviert
  • Microsoft Azure AD App-Registrierung:
    • Calendars.ReadWrite, User.Read (Application Permissions)
    • Admin-Zustimmung erforderlich
    • Client-ID, Client-Secret und Tenant-ID

📦 Installation

Kein Composer benötigt. Einfach Datei ins Projekt einfügen:

require_once 'GraphCalendar.php';

⚙️ Office 365 Einrichtung (Azure AD)

🛠️ Schritt 1: Im Azure-Portal anmelden

  1. Besuche https://portal.azure.com
  2. Melde dich mit einem Admin-Konto deiner Organisation an

🧩 Schritt 2: App-Registrierung erstellen

  1. Navigiere zu: Azure Active Directory > App-Registrierungen
  2. Klicke auf + Neue Registrierung
  3. Eingaben:
    • Name: Outlook Kalender PHP
    • Kontotyp: Nur Organisation
    • Umleitungs-URI: leer lassen
  4. Klicke auf Registrieren

🔍 Schritt 3: Wichtige Daten kopieren

Bezeichnung Verwendungszweck
Client-ID CLIENT_ID
Verzeichnis-ID (Tenant) TENANT_ID

🔐 Schritt 4: Client Secret erstellen

  1. Menü: Zertifikate & Geheimnisse
  2. Klicke auf + Neuer geheimer Schlüssel
  3. Beschreibung z.B. Standard, Ablaufzeit wählen
  4. Klicke auf Hinzufügen
  5. Kopiere den generierten Wert sofort → CLIENT_SECRET

🛡️ Schritt 5: API-Berechtigungen

  1. Menü: API-Berechtigungen
  2. Klicke auf + Berechtigung hinzufügen
  3. Wähle:
    • Microsoft Graph
    • Anwendungsberechtigungen
    • Füge hinzu:
      • Calendars.Read
      • Calendars.ReadWrite
  4. Klicke danach auf Admin-Zustimmung erteilen

⚠️ Office 365 Graph API Limits

Limittyp Beschreibung
Anfragen ~10.000/10 Min. pro App/User (danach Fehler 429)
Teilnehmerzahl Max. ~500 pro Termin
Beschreibung (Body) Max. ~100.000 Zeichen (HTML/Text)
Ort (Location) Max. 255 Zeichen
Teams-Meetings Nur mit Teams-Lizenz & OnlineMeetings.ReadWrite
Paging Nur 100 Events pro Anfrage nutze @odata.nextLink
Anhänge Max. 150 MB (3MB pro Datei über diese WebAPI) große Dateien vermeiden

🚀 Beispielnutzung

$calendar = new GraphCalendar(
    'DEINE_CLIENT_ID',
    'DEIN_CLIENT_SECRET',
    'DEIN_TENANT_ID',
    'defaultuser@example.com' // Optional
);

// Event erstellen
$calendar->createEvent(
    'Team Meeting',
    '2025-05-01T10:00:00',
    '2025-05-01T11:00:00',
    true,
    'Wöchentliches Sync-Meeting',
    'Online',
    [
        [
            'emailAddress' => [
                'address' => 'gast@example.com',
                'name' => 'Gast Name'
            ],
            'type' => 'required'
        ]
    ]
);

// Events abrufen
$events = $calendar->getEvents();

// Einzelnes Event abrufen
$event = $calendar->getEvents('EVENT_ID');

// Event aktualisieren
$calendar->updateEvent('EVENT_ID', 'Neuer Titel', '2025-05-01T12:00:00', '2025-05-01T13:00:00');

// Event löschen
$calendar->deleteEvent('EVENT_ID');

🧠 Tipps

  • Verwende gültige Zeitzonenbezeichner wie Europe/Berlin, UTC, etc.
  • Für Teams-Meetings setze isOnlineMeeting = true und onlineMeetingProvider = teamsForBusiness

📄 Lizenz

MIT License frei für private & kommerzielle Nutzung. Keine Garantie.


📅 Stand: Mai 2025
🔗 Weitere Infos: Microsoft Graph Dokumentation


Online Test / Beispielnutzung

Dieser Client läuft online als Test in einer Office365 Umgebung. Und ist unter https://sb.zeus.tips/outlook-api/ erreichbar.