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