Termine im Outlook Gruppenkalender erstellen mit PHP
Guten Morgen,
ich arbeite mich gerade erst in das Thema ein und habe ein Hürden zu meistern.
Ich möchte mittels PHP einen Termin im Gruppenkalender erstellen.
Gruppe = Gruppe die im Admincenter angelegt wurde. Diese Gruppe hat auch einen Kalender im Outlook, den ich auch angezeigt bekomme.
Ich habe in Azure eine App Registriert mit den nötigen Berechtigungen. (Sind schon zu viele, rein aus Testgründen)
Client ID und Secret habe ich auch
Gruppen ID ist auch bekannt
In meinem Kalender oder bei Kollegen ist kein Problem. Das funktioniert Problemlos.
Jetzt wollen wir ein Urlaubskalender einführen und dafür den Gruppenkalender benutzen.
Dort möchte ich jetzt Termine erstellen. Das funktioniert allerdings nicht .
Das wird mit der Fehlermeldung beendet. Die Meldung ist klar aber warum erhalte ich diese, wenn es mit meinem Kalender funktioniert? Fehlen eventuell doch Berechtigungen?
Vielleicht hat jemand eine IDee oder einen Tipp wonach ich schauen kann?
Danke schonmal
ich arbeite mich gerade erst in das Thema ein und habe ein Hürden zu meistern.
Ich möchte mittels PHP einen Termin im Gruppenkalender erstellen.
Gruppe = Gruppe die im Admincenter angelegt wurde. Diese Gruppe hat auch einen Kalender im Outlook, den ich auch angezeigt bekomme.
Ich habe in Azure eine App Registriert mit den nötigen Berechtigungen. (Sind schon zu viele, rein aus Testgründen)
Calendars.Read
Calendars.Read.Shared
Calendars.ReadBasic
Calendars.ReadBasic.All
Calendars.ReadWrite
Calendars.ReadWrite.Shared
Group.Create
Group.Read.All
Group.Read.All
Group.ReadWrite.All
GroupMember.Read.All
GroupMember.ReadWrite.All
User.Read
User.Read.All
Client ID und Secret habe ich auch
Gruppen ID ist auch bekannt
In meinem Kalender oder bei Kollegen ist kein Problem. Das funktioniert Problemlos.
Jetzt wollen wir ein Urlaubskalender einführen und dafür den Gruppenkalender benutzen.
Dort möchte ich jetzt Termine erstellen. Das funktioniert allerdings nicht .
<?php
$url = 'https://login.microsoftonline.com/{tennant-ID}/oauth2/v2.0/token';
$data = [
'client_id' => '***',
'scope' => 'https://graph.microsoft.com/.default',
'client_secret' => '***',
'grant_type' => 'client_credentials'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-type: application/x-www-form-urlencoded'
]);
$result = curl_exec($ch);
if ($result === false) {
echo 'Curl-Fehler: ' . curl_error($ch);
}
curl_close($ch);
$response = json_decode($result, true);
if (isset($response['access_token'])) {
$token = $response['access_token'];
} else {
echo "Access Token nicht in der Antwort gefunden!";
die();
}
$token = $response['access_token'];
//Hiermit kann ich einen Termin in meinem Kalender erstellen
//$userId = '***';
//$url = "https://graph.microsoft.com/v1.0/users/$userId/events";
//Hiermit möchte ich einen Termin im Gruppenkalender erstellen
//$groupId = '***';
$url = 'https://graph.microsoft.com/v1.0/groups/$groupId/events';
//$url = 'https://graph.microsoft.com/v1.0/groups/$groupId/calendar/events';
$eventData = [
'subject' => 'Automatisierter Testtermin',
'start' => [
'dateTime' => '2023-08-17T12:00:00',
'timeZone' => 'UTC'
],
'end' => [
'dateTime' => '2023-08-17T13:00:00',
'timeZone' => 'UTC'
],
'body' => [
'contentType' => 'HTML',
'content' => 'Kann gelöscht werden. .'
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($eventData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $token",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
$response = json_decode($result, true);
curl_close($ch);
if (isset($response['id'])) {
echo "Termin erfolgreich erstellt mit ID: " . $response['id'];
} else {
echo "Fehler beim Erstellen des Termins.";
}
if (isset($response['error'])) {
echo "Fehler: " . $response['error']['message'];
}
Das wird mit der Fehlermeldung beendet. Die Meldung ist klar aber warum erhalte ich diese, wenn es mit meinem Kalender funktioniert? Fehlen eventuell doch Berechtigungen?
Vielleicht hat jemand eine IDee oder einen Tipp wonach ich schauen kann?
array(2) { ["code"]=> string(17) "ErrorAccessDenied" ["message"]=> string(50) "Access is denied. Check credentials and try again." } }
Danke schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8175963422
Url: https://administrator.de/contentid/8175963422
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Stichwort AdminConsent und Delegated permission
Hier wird das beschrieben
https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oaut ...
https://learn.microsoft.com/en-us/azure/active-directory/develop/permiss ...
Gruß siddius
Hier wird das beschrieben
https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oaut ...
https://learn.microsoft.com/en-us/azure/active-directory/develop/permiss ...
Gruß siddius