Configuración de servicios de Microsoft 365 con Microsoft Graph API en Visual Studio

Puede usar Microsoft Graph para consumir información de usuario almacenada en Microsoft 365 en aplicaciones personalizadas. Al usar Servicios conectados en Visual Studio, puede conceder a la aplicación acceso a los siguientes servicios de Microsoft 365:

  • Outlook: correo, calendarios y contactos
  • Microsoft Entra ID: usuarios, grupos y directorios
  • OneDrive: archivos
  • OneNote: notas y cuadernos
  • SharePoint: sitios, listas y bibliotecas de documentos
  • Planner: tareas

En este artículo se describe cómo configurar Servicios conectados en Visual Studio para usar Microsoft Graph en una aplicación de MVC de ASP.NET que muestra eventos del calendario del usuario que ha iniciado sesión actualmente.

Para empezar

Para usar el Office 365 Servicios conectados con Microsoft Graph, debe:

Obtener el proyecto de inicio

Descargue el ejemplo de aplicación MVC de Microsoft Graph ASP.NET Connected Services. En este ejemplo se incluyen las referencias que necesita autenticar en Microsoft Graph. Después de descargar el proyecto de inicio, descomprima y abra el ejemplo graph-tutorial en Visual Studio.

Agregar el Servicio conectado

Visual Studio 2022

  1. En Explorador de soluciones, elija Servicios conectados para abrir la pestaña Servicios conectados.
  2. En Dependencias del servicio, haga clic en el + botón para agregar una nueva dependencia de servicio.
  3. Desplácese hacia abajo y elija Acceso a los servicios de Microsoft 365 con Microsoft Graph.

Visual Studio 2017 y Visual Studio 2019

  1. En el explorador de soluciones, elija Servicios conectados para abrir la pestaña Servicios conectados.
  2. Elija Acceder a los servicios de Microsoft 365 con el proveedor de Microsoft Graph .

Configuración del acceso a datos de Microsoft 365

  1. Escriba el dominio de la cuenta de desarrollador y elija Siguiente.

    Vaya Centro de administración Microsoft Entra para buscar el nombre de dominio. Inicie sesión y expanda el menú >Identidad y seleccione Información general. El campo Dominio principal de la sección Información básica contiene el nombre de dominio.

Propina: Si la dirección principal es admin@contoso.com, el dominio es contoso.com'.

  1. Seleccione Crear un nuevo registro de aplicación y complete el proceso de creación de un registro de aplicación.

  2. En este tutorial, seleccione los permisos siguientes:

    • Seleccione la pestaña Calendarios y active la casilla Leer los calendarios para conceder el permiso a la Calendar.Read aplicación.
    • Seleccione la pestaña Usuario y active la casilla Iniciar sesión y lea su perfil para conceder el permiso a la User.Read aplicación.
  3. Elija Finalizar.

Actualización de la configuración de la aplicación

  1. Haga doble clic en Web.config.

  2. Dentro <de appSettings>, inserte el código siguiente:

    <add key="ida:RedirectUri" value="https://localhost:PORT/" />
    <add key="ida:AppScopes" value="User.Read Calendars.Read" />
    

    Modifique el PORT valor de para ida:RedirectUri que coincida con la dirección URL de la aplicación.

Propina: Puede encontrar la información de PUERTO en las propiedades del proyecto.

Ejecutar el ejemplo

Guarde los cambios e inicie el proyecto. A continuación, seleccione el botón Haga clic aquí para iniciar sesión que le redirigirá a https://login.microsoftonline.com. Inicie sesión con su cuenta de desarrollador y dé su consentimiento a los permisos solicitados.

La página principal muestra el nombre que indica que ha iniciado sesión. En la pestaña Calendario , se muestra una tabla de eventos en función de su cuenta.

Seleccione Cerrar sesión en el avatar de la esquina superior derecha para restablecer la sesión y volver a la página principal.

Examinar el código

Ahora puede explorar los archivos y el código en Visual Studio para obtener más información sobre este proyecto de inicio.

Solicitud a Microsoft Graph API

Helpers\GraphHelper.cs contiene los métodos que usan GraphServiceClient para enviar solicitudes al servicio Microsoft Graph. Esta clase implementa el método GetUserDetailsAsync que usa el SDK de Microsoft Graph para volver a tratar la información del usuario mediante una llamada al /me punto de conexión.

El método GetEventsAsync usa el punto de /v1.0/me/events conexión para solicitar datos de calendarios. El select parámetro de consulta OData limita los campos devueltos para cada evento a solo los que se muestran en la vista. El orderBy parámetro ordena los resultados por la fecha y hora en que se crearon, siendo primero el elemento más reciente.

El método GetAuthenticatedClient inicializa un GraphServiceClient con un proveedor de autenticación e intenta recuperar un token de acceso obtenido anteriormente del almacén de tokens mediante el método AcquireTokenSilent . Tenga en cuenta que si se produce un error en AcquireTokenSilent , el usuario se presenta con un inicio de sesión interactivo.

Autenticación

El App_Start\Startup.Auth.cs configura el middleware de OWIN con los valores de Web.config y define los siguientes métodos de devolución de llamada OnAuthenticationFailedAsync y OnAuthorizationCodeReceivedAsync que se invocan cuando el proceso de inicio de sesión vuelve de Azure.

El método OnAuthorizationCodeReceivedAsync encapsula la caché de tokens de usuario predeterminada de ConfidentialClientApplication con la clase SessionTokenStore . La biblioteca MSAL controla la lógica de almacenar los tokens y actualizarlos cuando sea necesario. El código pasa los detalles del usuario obtenidos de Microsoft Graph al objeto SessionTokenStore que se va a almacenar en la sesión.

Caché de tokens

TokenStorage\SessionTokenCache.cs implementa una clase de almacén de tokens para serializar y almacenar la caché de tokens MSAL y los detalles del usuario en la sesión de usuario. Se puede reemplazar por su memoria caché de token personalizada. Para obtener más información, consulte Tokens de acceso de caché.

Inicio de sesión y cierre de sesión

Controllers\AccountController.cs es un controlador para controlar el inicio de sesión que define una acción SignIn y SignOut. La acción SignIn comprueba si la solicitud ya está autenticada. Si no es así, invocará al middleware OWIN para autenticar al usuario. La acción SignOut invoca el middleware de OWIN para cerrar la sesión.

Vistas

Views\Shared\_Layout.cshtml define el diseño global de la aplicación. Agrega Bootstrap para un estilo sencillo y Font Awesome para iconos, define el diseño de la barra de navegación y usa la clase Alert para mostrar alertas.

Views\Home\Index.cshtml y Views\Calendar\Index.cshtml contienen la interfaz de usuario para mostrar la información recuperada de Azure.

¿Necesita ayuda?

Si necesita ayuda, publique sus preguntas en Microsoft Q&A. Etiquete su publicación con {microsoft-graph-identity}.