AddOn/Calender_Office365/readme.md hinzugefügt

This commit is contained in:
olaf.braun 2025-05-05 19:27:50 +02:00
parent b69f9dc73b
commit e8b64c9e64
1 changed files with 171 additions and 0 deletions

View File

@ -0,0 +1,171 @@
# 📅 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.