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
Please also mark the comments that contributed to the solution of the article
Content-Key: 8175963422
Url: https://administrator.de/contentid/8175963422
Printed on: May 5, 2024 at 16:05 o'clock
3 Comments
Latest comment
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