Zeigen Sie die E-Mails eines Benutzers an
Sie haben eine JavaScript-App erstellt und sie mithilfe der Microsoft-Authentifizierungsbibliothek mit Microsoft 365 verbunden. Jetzt ist es an der Zeit, die E-Mails eines Benutzers abzurufen und sie in Ihrer App anzuzeigen.
Entscheiden Sie, welche Berechtigungen für Ihre App erforderlich sind
Alle von Microsoft Graph verfügbaren Daten sind gesichert, und die App muss über die entsprechenden Berechtigungen verfügen, um auf sie zugreifen zu können. Welche Berechtigungen erforderlich sind, hängt von der Art der Informationen ab, auf die Ihre App zugreifen muss. Um beispielsweise auf den Kalender eines Benutzers zugreifen zu können, muss Ihre App über die Berechtigung Calendars.Read verfügen. Für den Zugriff auf die E-Mails eines Benutzers benötigt Ihre App die Berechtigung Mail.Read. 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. Ihre App sollte nur die Berechtigungen anfordern, die Sie tatsächlich benötigen.
Angenommen, Ihre App hat zwei Seiten. Eine Seite zeigt die E-Mails eines Benutzers und die andere Seite zeigt ihre Kalender an. Wenn sich der Benutzer zum ersten Mal bei Ihrer App anmeldet, benötigt Ihre App nur Zugriff auf seine grundlegenden Profilinformationen. Wenn sie zur Seite mit den E-Mails wechseln, fordert die App die Berechtigung zum Lesen der E-Mails an. Wenn sie niemals die Seite in Ihrer App besuchen, auf der ihr Kalender angezeigt wird, hat Ihre App keinen Zugriff auf ihre Kalenderdaten.
Dieses Muster wird als dynamische Zustimmung bezeichnet und es ist die empfohlene Methode, Berechtigungen von Apps anzufordern, die mit Microsoft 365 verbunden sind. Mit dynamischer Zustimmung steuern Benutzer die Daten, die sie mit den von ihnen verwendeten Apps teilen, wodurch Sicherheitsrisiken minimiert werden.
Festlegen der erforderlichen Berechtigungen
Bevor Sie Microsoft Graph aufrufen, stellen Sie sicher, dass die Microsoft-Authentifizierungsbibliothek eine Liste der von Microsoft Graph erforderlichen Berechtigungen enthält. Die Microsoft-Authentifizierungsbibliothek überprüft automatisch, ob das zuvor abgerufene Zugriffstoken die erforderlichen Bereiche enthält oder nicht. Andernfalls versucht es automatisch, ein neues Zugriffstoken für Sie abzurufen. Wenn Sie die App zum ersten Mal verwenden, zeigt die Microsoft-Authentifizierungsbibliothek ein Popupfenster an, in dem Sie aufgefordert werden, zuzulassen, dass die App auf diese Informationen zugreifen kann.
Wenn Sie die Bereiche der Microsoft-Authentifizierungsbibliothek in einer globalen Variable nachverfolgen, überprüfen Sie, ob die erforderlichen Berechtigungen in der Liste der Bereiche enthalten sind, bevor Sie den Aufruf ausführen. Da Sie vor jedem Aufruf sicherstellen müssen, dass die erforderlichen Bereiche angegeben sind, können Sie ihn in eine Hilfsfunktion einbinden.
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 getEmails() {
ensureScope('mail.read');
// ...
}
Abrufen der E-Mails eines Benutzers aus Microsoft Graph
Um E-Mails eines Benutzers von Microsoft Graph abzurufen, rufen Sie den Endpunkt /me/messages
auf. Es wird eine Liste von E-Mails aus dem Postfach des angemeldeten Benutzers angezeigt. Um die E-Mails eines Benutzers zu erhalten, müssen Sie Ihrer App die Berechtigung „Mail.Read
“ erteilen. Sie können Microsoft Graph-Endpunkte über den Microsoft Graph SDK aufrufen. Um sie zu verwenden, geben Sie den Endpunkt und den Typ der Anforderung an, die Sie ausführen möchten.
Das Abrufen von E-Mails ist eine GET-Anforderung, die Sie wie folgt ausführen:
graphClient.api('/me/messages').get();
Microsoft Graph-Endpunkte geben Daten in beliebiger Reihenfolge an. Um sicherzustellen, dass Sie die neuesten Nachrichten erhalten, sortieren Sie sie in absteigender Reihenfolge nach dem Datum, an dem sie empfangen wurden.
graphClient
.api('/me/messages')
.orderby('receivedDateTime desc')
.get();
Wenn Sie Daten aus Microsoft Graph abrufen, sollten Sie immer nur die Daten abrufen, die Sie benötigen, wie bereits erwähnt. Indem Sie die Datenmenge, die Microsoft Graph abrufen und über das Netzwerk an Ihre App übertragen muss, minimieren, können Sie die Leistung Ihrer App erheblich verbessern.
Sie können die Menge der von Microsoft 365 abgerufenen Daten auf zwei Arten einschränken:
- Wählen Sie aus, wie viele Elemente Sie abrufen möchten.
- Wählen Sie die spezifischen Informationen aus, die einbezogen werden sollen.
Um anzugeben, welche Eigenschaften Sie abrufen möchten, erweitern Sie die Microsoft Graph-Anfrage mit der select
-Methode und übergeben Sie eine kommagetrennte Liste von Eigenschaften, die zurückgegeben werden sollen. Verwenden Sie beispielsweise den folgenden Befehl, um eine Liste der E-Mails mit nur ihrem Betreff und dem Datum/der Uhrzeit ihres Eingangs abzurufen:
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.get();
Tipp
Die vollständige Liste der Eigenschaften, die für jeden Endpunkt verfügbar sind, finden Sie in der API-Referenz von Microsoft Graph.
Eine weitere Aktion, mit der Sie die von Microsoft 365 zurückgegebene Datenmenge einschränken können, ist die Angabe der Anzahl an Elementen, die Sie erhalten möchten. Wenn Sie angeben möchten, wie viele Elemente Sie abrufen möchten, erweitern Sie die Microsoft Graph-Anforderung mit der top
-Methode. Um beispielsweise die 10 zuletzt empfangenen E-Mails abzurufen, verwenden Sie den folgenden Befehl:
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.top(10)
.get();
Nächste Schritte
Setzen Sie alles, was Sie gelernt haben, in die Praxis um und erweitern Sie Ihre App so, dass sie die 10 zuletzt empfangenen E-Mails für den aktuellen Benutzer anzeigt.