Greifen Sie mithilfe von Microsoft Graph auf die Kalenderereignisse eines Benutzers zu
In dieser Einheit erfahren Sie, wie Sie die Kalenderereignisse eines Benutzers für die kommende Woche anzeigen. Sie werden ebenfalls erfahren, wie Sie Datenereignisse für einen bestimmten Zeitraum abfragen und Konzepte wie Auswahl und Sortieren verwenden, um Informationen in der gewünschten Weise anzuzeigen.
Entscheiden, welche Berechtigungen Ihre App benötigt
Alle von Microsoft Graph verfügbar gemachten Daten sind gesichert. Ihre App muss über die richtigen Berechtigungen verfügen, um darauf zugreifen zu können. Die erforderlichen Berechtigungen sind von der Art der Informationen abhängig, auf die Ihre App zugreifen muss. Für den Zugriff auf den Kalender des Benutzers muss Ihre App beispielsweise über die Berechtigung Calendars.Read verfügen. Die genaue Liste der für jeden Vorgang erforderlichen Berechtigungen finden Sie in der API-Referenz von Microsoft Graph.
Wenn Ihre App unterschiedliche Datentypen lädt, müssen die Benutzer ihr mehrere Berechtigungen erteilen, die für den Zugriff auf diese Informationen erforderlich sind. Fordern Sie in Ihrer App nur die Berechtigungen an, die Sie benötigen. In diesem Modul fordert Ihre App die Berechtigung an, den Namen des Benutzers zunächst zu lesen, und fordert sie nur dann zum Lesen des Kalenders auf, wenn Sie die Schaltfläche zum Anzeigen der Ereignisse auswählen. Dieses Muster wird als dynamische Zustimmung bezeichnet und stellt die empfohlene Methode zum Anfordern von Berechtigungen dar. Mit dynamischer Zustimmung steuern Benutzer die Daten, die sie mit den von ihnen verwendeten Apps teilen, wodurch Sicherheitsrisiken minimiert werden.
Festlegen der erforderlichen Berechtigungen
Die Liste der gewährten Berechtigungen Ihrer App wird direkt im Zugriffstoken integriert. Im OAuth-Standard werden sie Bereiche (scopes) genannt. Wenn Ihre Anwendung die Microsoft-Authentifizierungsbibliothek verwendet, um das Zugriffstoken abzurufen, muss sie eine Liste von Bereichen in der Anforderung an die Microsoft Entra-ID enthalten. Jeder Vorgang in Microsoft Graph besitzt seine eigene Liste von Bereichen. Wenn Ihr Zugriffstoken nicht über eine dieser Token verfügt, wird die Anforderung abgelehnt.
Die Beispielanwendung speichert die aktuelle Anforderung der Microsoft-Authentifizierungsbibliothek in einer globalen Variable mit Namen msalRequest
. Zunächst enthält sie ein leeres Array von Bereichen.
const msalRequest = { scopes: [] };
Hier ist die Hilfsfunktion, die von der Beispielanwendung verwendet wird, um der Anforderung weitere Bereiche hinzuzufügen.
function ensureScope (scope) {
if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
msalRequest.scopes.push(scope);
}
}
Wenn Sie Microsoft Graph aufrufen, um Daten abzurufen, stellen Sie sicher, dass die erforderlichen Berechtigungen enthalten sind, indem Sie die Hilfsfunktion aufrufen.
async function getEvents() {
ensureScope('Calendars.read');
// ...
}
Die Kalenderereignisse eines Benutzers für einen bestimmten Zeitraum abrufen
Um die Kalenderereignisse eines Benutzers von Microsoft Graph abzurufen, rufen Sie wie zuvor erwähnt den /me/calendarview
-Endpunkt auf. Dadurch wird eine Liste von Vorkommen und einzelnen Instanzen von Kalenderereignissen aus dem Standardkalender des angemeldeten Benutzers zurückgegeben. Sie können Microsoft Graph-Endpunkte mithilfe des Microsoft Graph-SDK aufrufen, um den Endpunkt und den Typ der Anforderung anzugeben, die Sie ausführen möchten.
Um nur Kalenderereignisse für die kommende Woche anzuzeigen, verwenden Sie die folgende Abfrage, um den Zeitraum für die Ereignisse zu übergeben:
graphClient
.api('/me/calendarview')
.query(`startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()}`);
Hier ist dateNow
das aktuelle Datum und dateNextWeek
ist das um sieben Tage in der Zukunft liegende Datum, um das einwöchige Fenster abzurufen.
Durch das Verringern der Datenmenge, die von Microsoft Graph abgerufen und übertragen wird, wird die Leistung Ihrer App erheblich verbessert. Die Methode select
kann verwendet werden, um bestimmte Eigenschaften in den Ergebnissen auszuwählen, welche die App verwenden wird. Die zurückzugebenden Eigenschaften werden als kommaseparierte Liste an select
übergeben:
graphClient
.api('/me/calendarview')
.query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
.select('subject,start,end');
Verwenden Sie die Methode orderby
, um die Sortierreihenfolge der Elemente im Ergebnis festzulegen. Um nach mehreren Feldern zu sortieren, geben Sie eine durch Kommas getrennte Reihe von Feldern an. Sie können auch angeben, ob die Elemente in auf- oder absteigender Reihenfolge sortiert werden sollen, indem Sie an Ihre Abfrage das Schlüsselwort asc
oder desc
anhängen.
In dieser App werden Sie die Daten in aufsteigender Reihenfolge nach dem Feld Start sortieren. Diese Reihenfolge ist die Standardreihenfolge, wenn kein Schlüsselwort wie asc
oder desc
angegeben wird:
graphClient
.api('/me/calendarview')
.query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
.select('subject,start,end')
.orderby('Start/DateTime');
So wird der endgültige Microsoft Graph-Aufruf aussehen:
graphClient
.api('/me/calendarview')
.query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
.select('subject,start,end')
.orderby('Start/DateTime')
.get();