Afficher les courriers électroniques d’un utilisateur
Vous avez créé une application JavaScript et vous l’avez connectée à Microsoft 365 à l’aide de la bibliothèque d’authentification Microsoft. À présent, il est temps de récupérer les e-mails d’un utilisateur et de les afficher dans votre application.
Choisir les autorisations dont votre application a besoin
Toutes les données exposées par Microsoft Graph sont sécurisées, et votre application doit avoir les autorisations nécessaires pour y accéder. Les autorisations spécifiques dont vous avez besoin dépendent du type d’informations dont vos applications ont besoin. Par exemple, pour accéder au calendrier d’un utilisateur, votre application doit disposer de l’autorisation Calendars.Read . Pour accéder à la messagerie d’un utilisateur, votre application a besoin de l’autorisation Mail.Read . La liste exacte des autorisations requises pour chaque opération est disponible dans la référence de l’API Microsoft Graph.
Si votre application charge différents types de données, les utilisateurs doivent lui accorder plusieurs autorisations d’accès à ces informations. Votre application doit demander uniquement les autorisations dont vous avez réellement besoin.
Imaginons que votre application possède deux pages. Une page affiche les e-mails d’un utilisateur, et l’autre affiche son calendrier. Lorsque l’utilisateur se connectent à votre application pour la première fois, celle-ci demande l’accès à ses informations de profil de base. Lorsqu'ils se rendent sur la page qui affiche les e-mails, votre application leur demande l'autorisation de lire leurs e-mails. S’il n’a jamais visité la page de votre application affichant son calendrier, l’application ne peut pas accéder à ses données de calendrier.
Ce modèle est appelé consentement dynamique et est recommandé pour la demande des autorisations par les applications connectées à Microsoft 365. Avec le consentement dynamique, les utilisateurs contrôlent les données qu’ils partagent avec les applications qu’ils utilisent, ce qui réduit les risques en matière de sécurité.
Spécifier les autorisations nécessaires
Avant d’appeler Microsoft Graph, assurez-vous que la bibliothèque d’authentification Microsoft contient la liste des autorisations requises par Microsoft Graph. La bibliothèque d’authentification Microsoft vérifie automatiquement si le jeton d’accès précédemment récupéré dispose des étendues nécessaires. Si ce n’est pas le cas, il tente automatiquement de récupérer un nouveau jeton d’accès à votre place. Lorsque vous utilisez l’application pour la première fois, MSAL affiche une fenêtre contextuelle vous demande de consentir à l'application en accédant à cet élément d'information.
Si vous suivez les étendues MSAL dans une variable globale, vérifiez si les autorisations nécessaires sont incluses dans la liste des étendues avant d’exécuter l’appel. Étant donné que vous devez vérifier les étendues nécessaires avant chaque appel, vous pouvez l’entourer dans une fonction d’aide.
function ensureScope (scope) {
if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
msalRequest.scopes.push(scope);
}
}
Lorsque vous appelez Microsoft Graph pour récupérer des données, vous devez vérifier que les autorisations nécessaires sont incluses en appelant la fonction d’aide.
async function getEmails() {
ensureScope('mail.read');
// ...
}
Récupérer les e-mails d’un utilisateur à partir de Microsoft Graph
Pour récupérer les e-mails d’un utilisateur à partir de Microsoft Graph, vous devez appeler le point de terminaison /me/messages
. Il renvoie la liste des e-mails de la boîte aux lettres de l’utilisateur connecté. Pour recevoir les e-mails d’un utilisateur, votre application doit recevoir les autorisations Mail.Read
. Vous pouvez appeler les points de terminaison Microsoft Graph à l’aide du kit de développement logiciel (SDK) Microsoft Graph. Pour l’utiliser, vous devez spécifier le point de terminaison et le type de demande à exécuter.
La récupération d’e-mails est une demande GET que vous exécutez comme suit :
graphClient.api('/me/messages').get();
Les points de terminaison Microsoft Graph retournent les données dans l’ordre arbitraire. Pour vous assurer que vous recevez les derniers messages, triez-les par ordre décroissant à partir de la date de réception.
graphClient
.api('/me/messages')
.orderby('receivedDateTime desc')
.get();
Lorsque vous récupérez des données à partir de Microsoft Graph, vous devez toujours récupérer uniquement les données dont vous avez besoin comme indiqué précédemment. La minimisation de la quantité de données dont Microsoft Graph récupère et transfère par virement vers votre application vous permet d’améliorer considérablement les performances de votre application.
Vous pouvez limiter la quantité de données récupérées à partir de Microsoft 365 de deux façons :
- Sélectionnez le nombre d’éléments que vous voulez obtenir.
- Sélectionnez les informations spécifiques à inclure.
Pour spécifier les propriétés à récupérer, étendez la demande Microsoft Graph à l’aide de la méthode select
et passez une liste de propriétés séparées par des virgules à renvoyer. Par exemple, pour obtenir la liste des e-mails avec leurs objets seulement et la date/heure de réception, utilisez la commande suivante :
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.get();
Conseil
Vous trouverez la liste complète des propriétés disponibles sur chaque point de terminaison dans la référence de l’API Microsoft Graph.
Une autre action que vous pouvez faire pour limiter la quantité de données renvoyées à partir de Microsoft 365, consiste à spécifier le nombre d’éléments que vous voulez obtenir. Pour spécifier le nombre d’éléments que vous souhaitez obtenir, étendez la demande Microsoft Graph avec la méthode top
. Par exemple, pour récupérer les 10 derniers courriers électroniques reçus, utilisez la commande suivante :
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.top(10)
.get();
Étapes suivantes
Passons à la phase pratique de l’apprentissage en développant votre application pour afficher les 10 derniers e-mails reçus de l’utilisateur actuel.