KevinB: Mittels Micrsoft Graph API einen Kalendereintrag für einen Benutzer erstellen

Beitrag lesen

Hallo,

wir werden bald auch Mitglied der MS Sekte und wechseln zu O365. Um unsere bisherigen intern wunderbar funktionierenden Dienste weiter nutzen zu können, bin ich auf der Suche, wie ich einen Kalendereintrag für einen Benutzer über die Microsoft Graph API erstellen kann.

Die APP-Registrierung ist erfolgt und die Berechtigung erteilt. Der Zugriff bspw. um den Benutzernamen über die Mail-Adresse zu bekommen funktioniert auch schonmal.

Der Code dafür sieht bspw wie folgt aus:

require_once '../vendor/autoload.php'; // Path to Microsoft Graph SDK and OAuth2 Client library

use Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext;
use Microsoft\Kiota\Abstractions\ApiException;
use Microsoft\Graph\Core\Authentication\GraphPhpLeagueAuthenticationProvider;
use Microsoft\Graph\GraphServiceClient;

$tokenContext = new ClientCredentialContext(
    $tenantId,
    $clientId,
    $clientSecret);

$graphServiceClient = new GraphServiceClient($tokenContext);

try {
    $user = $graphServiceClient->users()->byUserId('max.mustermann@example.com')->get()->wait();
    echo "User Name = {$user->getDisplayName()} <br/>";

} catch (ApiException $ex) {
    echo "Fehler: ".$ex->getError()->getMessage();
	exit;
}

Aber der folgende Versuch einen Kalendereintrag zu schreiben

$requestBody = new Event();
$requestBody->setSubject('Let\'s go for lunch');
$body = new ItemBody();
$body->setContentType(new BodyType('hTML'));
$body->setContent('Does noon work for you?');
$requestBody->setBody($body);
$start = new DateTimeTimeZone();
$start->setDateTime('2024-02-22T12:00:00');
$start->setTimeZone(new DateTimeZone('Europe/Berlin'));
$requestBody->setStart($start);
$end = new DateTimeTimeZone();
$end->setDateTime('2024-02-22T13:00:00');
$end->setTimeZone(new DateTimeZone('Europe/Berlin'));
$requestBody->setEnd($end);
$location = new Location();
$location->setDisplayName('Harry\'s Bar');
$requestBody->setLocation($location);

$result = $graphServiceClient->users()->byUserId('max.mustermann@example.com')->events()->post($requestBody, $requestConfiguration)->wait();

erzeugt den Fehler Fatal error: Uncaught Error: Class 'Event' not found

Was habe ich falsch gemacht oder vergessen? In Beispiele von MS sind da leider nicht erleuchtend.

LG KevinB