Ejercicio: Acceso a los eventos de calendario de un usuario mediante Microsoft Graph

Completado

Ahora se usarán todos los conceptos descritos hasta este momento y se realizarán cambios en la aplicación de ejemplo para acceder a los eventos del calendario.

  1. Busque el archivo index.html en el editor de código. Agregue el código HTML siguiente a la etiqueta <main> justo antes de su etiqueta </main> de cierre.

    <button id="btnShowEvents" style="display: none;" onclick="displayEvents();">Show events</button>
    <div id="eventWrapper" style="display: none;">
      <p>Your events retrieved from Microsoft Graph for the upcoming week:</p>
      <ul id="events"></ul>
    </div>
    
  2. Busque el archivo graph.js en el editor. Agregue una nueva función para obtener los eventos de calendario del usuario que ha iniciado sesión para la próxima semana mediante el punto de conexión de Microsoft Graph API /me/calendarView. Llamará a esta función getEvents().

    Agregue el siguiente código al final del documento ./src/server/server.ts:

    async function getEvents() {
      ensureScope('Calendars.read');
      const dateNow = new Date();
      const dateNextWeek = new Date();
      dateNextWeek.setDate(dateNextWeek.getDate() + 7);
      const query = `startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()}`;
    
      return await graphClient
      .api('/me/calendarView').query(query)
      .select('subject,start,end')
      .orderby(`start/DateTime`)
      .get();
    }
    
  3. Busque el archivo ui.js y agregue una función nueva para mostrar los eventos de calendario recibidos de Microsoft Graph en el elemento de lista. Llamará a esta función displayEvents().

    Agregue el siguiente código al final del documento ./src/server/server.ts:

    async function displayEvents() {
      var events = await getEvents();
      if (!events || events.value.length < 1) {
        var content = document.getElementById('content');
        var noItemsMessage = document.createElement('p');
        noItemsMessage.innerHTML = `No events for the coming week!`;
        content.appendChild(noItemsMessage)
    
      } else {
        var wrapperShowEvents = document.getElementById('eventWrapper');
        wrapperShowEvents.style = "display: block";
        const eventsElement = document.getElementById('events');
        eventsElement.innerHTML = '';
        events.value.forEach(event => {
          var eventList = document.createElement('li');
          eventList.innerText = `${event.subject} - From  ${new Date(event.start.dateTime).toLocaleString()} to ${new Date(event.end.dateTime).toLocaleString()} `;
          eventsElement.appendChild(eventList);
        });
      }
      var btnShowEvents = document.getElementById('btnShowEvents');
      btnShowEvents.style = "display: none";
    }
    
  4. En el mismo archivo ui.js, actualice la función displayUI() para mostrar el botón Mostrar eventos solo cuando la autorización se haya realizado correctamente.

    Agregue el siguiente código al final de la función displayUI():

    var btnShowEvents = document.getElementById('btnShowEvents');
    btnShowEvents.style = "display: block";
    

Ahora que ha agregado todas las demás funciones y los fragmentos de código a los eventos de un usuario que ha iniciado sesión para la próxima semana, el siguiente paso consiste en ejecutar la aplicación localmente.

Ejecutar la aplicación

Para ejecutar y probar la aplicación, tendrá que agregar algunos eventos de calendario al calendario mediante Microsoft Outlook o Microsoft Teams. Los eventos deben estar dentro de un período de una semana.

Sugerencia

En este paso, asegúrese de que tiene Node.js instalado en la máquina.

Es el momento de ver que la aplicación se ejecuta localmente.

  1. En la ventana de terminal, vaya a la carpeta del proyecto donde se encuentra el código fuente.

  2. Ejecute el script siguiente en la línea de comandos para iniciar la aplicación localmente mediante la apertura de http://localhost:8080 en el explorador.

    npm start
    
  3. Si la aplicación está configurada correctamente, verá un botón de inicio de sesión.

    Captura de pantalla en la que se muestra el botón Iniciar sesión con Microsoft.

  4. Inicie sesión con una cuenta en el mismo inquilino para desarrolladores de Microsoft 365 usado en la unidad 2, donde registró la aplicación Microsoft Entra.

  5. Después de iniciar sesión correctamente, se le pedirá que dé su consentimiento.

    Captura de pantalla en la que se muestra la página de consentimiento.

  6. Seleccione Aceptar para dar su consentimiento a fin de que la aplicación realice operaciones para el usuario.

  7. Después de dar el consentimiento, la aplicación intenta obtener un token de acceso mediante la información de la cuenta validada. La biblioteca de autenticación de Microsoft controla este paso de forma automática.

  8. Una vez que el token vuelve a estar en la aplicación, se realiza una solicitud GET al punto de conexión /me de Microsoft Graph. El token de acceso se pasa en el encabezado de autorización. La llamada a /me recupera los datos del servicio de forma segura.

  9. Después de recibir la respuesta de Microsoft Graph, verá el mensaje de bienvenida con el nombre del usuario que ha iniciado sesión. Seleccione el botón Mostrar eventos.

    Captura de pantalla en la que se muestra el mensaje de bienvenida.

  10. Aparecerá otro cuadro de diálogo de consentimiento. Observe el ámbito del permiso Leer el calendario al que va a dar su consentimiento.

    Captura de pantalla en la que se muestra la página de consentimiento para el permiso de calendario.

  11. Seleccione Aceptar para dar su consentimiento a fin de que la aplicación realice operaciones para el usuario.

  12. Después de dar el consentimiento, la aplicación intenta obtener un token de acceso mediante la información de la cuenta validada. La biblioteca de autenticación de Microsoft controla este paso de forma automática.

  13. Una vez que el token vuelve a estar en la aplicación, se realiza una solicitud GET al punto de conexión /me/calendarView de Microsoft Graph. El token de acceso se pasa en el encabezado de autorización. La llamada a /me/calendarView recupera los datos del servicio de forma segura.

  14. Después de recibir la respuesta de Microsoft Graph, verá los eventos de calendario del usuario que ha iniciado sesión para la próxima semana.

    Captura de pantalla en la que se muestran los eventos semanales del usuario

Ha demostrado correctamente cómo acceder a eventos de calendario de Microsoft 365 y mostrarlos para un usuario que ha iniciado sesión mediante Microsoft Graph.