Mostrar los correos electrónicos de un usuario

Completado

Creó una aplicación de JavaScript y la conectó a Microsoft 365 mediante la biblioteca de autenticación de Microsoft. Ahora es el momento de recuperar los correos de un usuario y mostrarlos en la aplicación.

Decidir qué permisos necesita la aplicación

Todos los datos expuestos por Microsoft Graph están protegidos y la aplicación debe tener los permisos adecuados concedidos para acceder a ellos. Los permisos que necesita dependen del tipo de información a la que la aplicación necesita acceder. Por ejemplo, para acceder al calendario de un usuario, la aplicación debe tener el permiso Calendars.Read. Para acceder al correo de un usuario, la aplicación necesita el permiso Mail.Read. La lista exacta de los permisos necesarios para cada operación está disponible en la referencia de API de Microsoft Graph.

Si la aplicación carga diferentes tipos de datos, los usuarios deben concederle varios permisos necesarios para acceder a esta información. En la aplicación, solicite solo los permisos que necesite.

Supongamos que la aplicación tiene dos páginas. Una página muestra los correos de un usuario y la otra página muestra su calendario. Cuando el usuario inicia sesión en la aplicación por primera vez, la aplicación solicita acceso solo a su información de perfil básica. Cuando va a la página que muestra los correos, la aplicación solicita permiso para leer su correo. Si nunca visita la página de la aplicación que muestra su calendario, la aplicación no tendría acceso a sus datos del calendario.

Este patrón se denomina consentimiento dinámico y es la manera recomendada de solicitar permisos por parte de las aplicaciones conectadas a Microsoft 365. Con el consentimiento dinámico, los usuarios controlan los datos que comparten con las aplicaciones que usan, lo que minimiza los riesgos de seguridad.

Especificar los permisos necesarios

Antes de llamar a Microsoft Graph, asegúrese de que la biblioteca de autenticación de Microsoft contenga una lista de los permisos requeridos por Microsoft Graph. La biblioteca de autenticación de Microsoft comprueba automáticamente si el token de acceso recuperado previamente tiene los ámbitos necesarios o no. Si no es así, intenta recuperar automáticamente un nuevo token de acceso. Cuando se usa la aplicación por primera vez, la biblioteca de autenticación de Microsoft muestra una ventana emergente que le pide que acceda a este fragmento de información para dar su consentimiento a la aplicación.

Si realiza un seguimiento de los ámbitos de la biblioteca de autenticación de Microsoft en una variable global, compruebe si los permisos necesarios se incluyen en la lista de ámbitos antes de ejecutar la llamada. Dado que necesita garantizar los ámbitos necesarios antes de cada llamada, puede incluirlo en una función auxiliar.

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

Al llamar a Microsoft Graph para recuperar datos, se asegura de que se incluyen los permisos necesarios mediante una llamada a la función auxiliar.

async function getEmails() {
  ensureScope('mail.read');
  // ...
}

Recuperar los correos de un usuario de Microsoft Graph

Para obtener los correos de un usuario de Microsoft Graph, llame al punto de conexión de /me/messages. Devuelve una lista de correos del buzón del usuario que inició sesión. Para obtener los correos de un usuario, se debe conceder a la aplicación el permiso Mail.Read. Puede llamar a los puntos de conexión de Microsoft Graph mediante el SDK de Microsoft Graph. Para usarlo, especifique el punto de conexión y el tipo de solicitud que desea ejecutar.

La recuperación de correos es una solicitud GET que se ejecuta de la siguiente manera:

graphClient.api('/me/messages').get();

Los puntos de conexión de Microsoft Graph devuelven datos en orden arbitrario. Para asegurarse de que obtiene los mensajes más recientes, ordene los mensajes en orden descendente por la fecha en que se recibieron.

graphClient
  .api('/me/messages')
  .orderby('receivedDateTime desc')
  .get();

Al recuperar datos de Microsoft Graph, siempre debe recuperar solo los datos que necesite, como se mencionó anteriormente. Minimizar la cantidad de datos que Microsoft Graph recupera y transfiere a través de la conexión a la aplicación le ayuda a mejorar significativamente el rendimiento de la aplicación.

Puede limitar la cantidad de datos recuperados de Microsoft 365 de dos maneras:

  • Seleccione cuántos elementos quiere obtener.
  • Seleccione la información específica que se va a incluir.

Para especificar qué propiedades quiere recuperar, extienda la solicitud de Microsoft Graph con el método select y pase una lista separada por comas de propiedades que se van a devolver. Por ejemplo, para obtener una lista de correos solo con su asunto y la fecha y hora en que se recibieron, use el siguiente comando:


graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .get();

Sugerencia

Puede encontrar la lista completa de propiedades disponibles en cada punto de conexión en la referencia de API de Microsoft Graph.

Otra acción que puede realizar para limitar la cantidad de datos devueltos desde Microsoft 365 es especificar cuántos elementos quiere obtener. Para especificar cuántos elementos quiere obtener, extienda la solicitud de Microsoft Graph con el método top. Por ejemplo, para recuperar los 10 últimos correos recibidos, use el siguiente comando:

graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

Pasos siguientes

Vamos a poner en práctica todo lo que aprendió y ampliar la aplicación para mostrar los 10 últimos correos recibidos para el usuario actual.