DSB-PlugIn/AddOn/Calender_Office365/readme.md

172 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📅 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:
```php
require_once 'GraphCalendar.php';
```
---
## ⚙️ Office 365 Einrichtung (Azure AD)
### 🛠️ Schritt 1: Im Azure-Portal anmelden
1. Besuche [https://portal.azure.com](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
```php
$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](https://learn.microsoft.com/en-us/graph/)
---
## Online Test / Beispielnutzung
Dieser Client läuft online als Test in einer Office365 Umgebung. Und ist unter https://sb.zeus.tips/outlook-api/ erreichbar.