Accéder aux événements de calendrier d’un utilisateur à l’aide de Microsoft Graph

Effectué

Dans cette unité, vous allez découvrir comment afficher les événements de calendrier d’un utilisateur pour la semaine à venir. Vous découvrirez également comment interroger des événements de données et utiliser des concepts comme sélectionner et organiser pour afficher les informations de la manière souhaitée.

Choisir les autorisations dont votre application a besoin

Toutes les données exposées par Microsoft Graph sont sécurisées. Votre application doit disposer des autorisations appropriées pour y accéder. L’autorisation nécessaire dépend du type d’informations dont votre application a besoin pour l’accès. Par exemple, pour accéder au calendrier de l’utilisateur, votre application doit disposer de l’autorisation Calendars.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. Dans votre application, ne demandez que les autorisations dont vous avez besoin. Dans ce module, votre application demande l’autorisation de lire initialement le nom de l’utilisateur et vous demande de lire son calendrier uniquement lorsque vous sélectionnez le bouton pour afficher les événements. Ce modèle est appelé consentement dynamique. Il s’agit des autorisations de requête recommandées. 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

La liste des autorisations accordées à votre application se trouve dans le jeton d’accès. La norme OAuth les appelle les étendues. Lorsque votre application utilise la bibliothèque d’authentification Microsoft pour obtenir le jeton d’accès, elle doit inclure une liste d’étendues dans la demande à l’ID Microsoft Entra. Chaque opération dans Microsoft Graph possède sa propre liste d’étendues. Si votre jeton d’accès n’en a pas, la demande est refusée.

L’exemple d’application stocke la demande de la bibliothèque d’authentification Microsoft actuelle dans une variable globale appelée msalRequest. Dans un premier temps, il contient un tableau vide d’étendues.

const msalRequest = { scopes: [] };

Voici la fonction d’aide utilisée par l’exemple d’application pour ajouter d’autres étendues à la demande.

function ensureScope (scope) {
  if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
    msalRequest.scopes.push(scope);
  }
}

Ensuite, 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 getEvents() {
  ensureScope('Calendars.read');
  // ...
}

Récupérer les événements de calendrier d’un utilisateur pour une période donnée

Pour obtenir les événements de calendrier d’un utilisateur à partir de Microsoft Graph, appelez le point de terminaison /me/calendarview comme mentionné précédemment. Il renvoie la liste des occurrences et des instances uniques des événements de calendrier à partir du calendrier par défaut de l’utilisateur connecté. Vous pouvez appeler les points de terminaison Microsoft Graph à l’aide du kit de développement logiciel (SDK) Microsoft Graph pour spécifier le point de terminaison et le type de demande à exécuter.

Pour afficher uniquement les événements de calendrier de la semaine à venir, utilisez cette requête pour transmettre l’intervalle de temps des résultats :

graphClient
    .api('/me/calendarview')
    .query(`startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()}`);

Ici, dateNow est la date actuelle et dateNextWeek est la date actuelle plus sept jours, pour obtenir une fenêtre d’une semaine.

Réduire la quantité de données récupérées et transférées par Microsoft Graph améliore considérablement les performances de votre application. La méthode select peut être utilisée pour sélectionner des propriétés spécifiques dans les résultats que l’application utilise. Les propriétés à renvoyer sont passées en tant que liste séparée par des virgules à select :

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end');

Utilisez la méthode orderby pour spécifier le mode de tri des éléments dans le résultat. Pour effectuer un tri en fonction de plusieurs champs, spécifiez une liste de champs séparés par des virgules. Vous pouvez également indiquer si vous souhaitez trier les éléments par ordre croissant ou décroissant en ajoutant le mot clé asc ou desc à votre requête.

Dans cette application, vous allez organiser les données en fonction du champ Début dans l’ordre croissant. Cet ordre est la valeur par défaut si aucun mot clé, tel que asc ou desc, n’est spécifié :

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end')
    .orderby('Start/DateTime');

Voici à quoi ressemblera l’appel Microsoft Graph final.

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end')
    .orderby('Start/DateTime')
    .get();