AddOn/Calender_Office365/readme.md hinzugefügt
This commit is contained in:
parent
b69f9dc73b
commit
e8b64c9e64
|
|
@ -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.
|
||||||
Loading…
Reference in New Issue