Microsoft Graph - Eventos calendarios Outlook I

Todos conocemos o hemos oído hablar acerca de Microsoft Graph. Pero ... ¿qué es Microsoft Graph?

Microsoft Graph



Microsoft lo define como: "Microsoft Graph es la puerta de enlace a datos y la inteligencia de Microsoft 365. Le proporciona un modelo de programación unificado que puede usar para acceder a la gran cantidad de datos en Microsoft 365, Windows y Enterprise Mobility + Security. Use la gran cantidad de datos accesibles a través de Microsoft Graph para crear aplicaciones para organizaciones y consumidores que interactúan con millones de usuarios."

En resumen, es una herramienta que permite la comunicación con distintos productos de Microsoft y gracias a ella seremos capaces de conectar desde otra aplicación (sea o no de Microsoft) con Outlook, Teams, Business central, ...

Existen librerías para .NET, Javascript, Phyton, etc. para facilitar la conexión y uso de graph. 

Este post estará dividido en varias partes debido a su extensión.

Hemos visto infinidad de tutoriales y ejemplos de cómo utilizar Microsoft graph en nuestro beneficio desde Business central.
Con esta serie de post se pretende recordar de nuevo cómo realizar la conexión y configuración , pero querría ir un poco más allá, querría crear además algo que pueda ser útil en el día a día. 
De entre las aplicaciones Microsoft disponibles a través de graph, para este tutorial vamos a centrarnos en Outlook. En concreto en sus calendarios y citas/eventos.

Cuando comienzo un desarrollo nuevo intento documentarme al máximo, localizar código que pueda ayudarme en esa tarea, de hecho en este tutorial, hay partes del código o funciones que he ido recopilando de otros post o tutoriales, pero por encima de todo, intento comprender lo que estoy haciendo: por qué, para qué, cómo funciona y a qué afectará todo esto que estoy haciendo.
Dicho esto, recomiendo siempre, en cualquier desarrollo, intentar comprender al máximo todo lo referente a ese desarrollo, de esa manera seremos más eficientes en el mantenimiento de dicho código y lo más importante, seremos capaces de aportar ideas o variaciones.

Después de esta pequeña introducción, vamos a comenzar, intentaré enrollarme lo menos posible, pero hay cosas y conceptos que me gustaría que se comprendieran bien.

Como hemos dicho, vamos a realizar una conexión a través de Microsoft graph desde Business central hacia Outlook y sus calendarios.
El código final que creemos debería ser capaz de interactuar con los eventos de los distintos calendarios de Outlook y le otorgaremos el mayor número de funcionalidades posible.
La primera parte es casi exclusivamente configuración y crear cuentas 😭😭 ... pero hay que hacerlo, vamos allá!!!

Cuenta gratuita Oulook

Comenzaremos dando de alta una cuenta en Oulook.
Esto nos proporcionará tanto una cuenta de correo como algunas otras aplicaciones igualmente gratuitas: OneDrive, Excel, Teams, ...
Navegaremos a la página Outlook y pulsaremos en Create a free account. 
Se abrirá la siguiente página:


Elegimos el nombre de nuestra cuenta y tras encontrar un nombre de cuenta disponible y demostrar que somos seres humanos 😂 tendremos nuestra cuenta creada.

Desde la parte superior izquierda podemos ver las aplicaciones que tenemos disponibles y movernos entre ellas.
La que nos interesa en este momento es Outlook, aunque lo que en este tutorial veremos sería aplicable a todas ellas: OneDrive, Teams, ... cada aplicación tiene sus permisos específicos que serán los que delimiten la aplicación o aplicaciones a las que podremos conectarnos.



Añadir que al crear nuestra cuenta de Oulook automáticamente tenemos a nuestra disposición 5 Gb de almacenamiento gratuito en OneDrive.

Alta en portal Azure
Lo que aquí realizaremos es registrar una aplicación ... vale ¿y eso qué es?¿para qué sirve?
Registrar una aplicación en Azure vendría a ser el equivalente a crear una puerta que proteja nuestras aplicaciones de Microsoft y que sólo alguien autorizado (nosotros o a quienes autoricemos) pueda acceder ellas.
En la creación de esa puerta definiremos qué hay detrás, es decir, cuando abra esa puerta ¿qué me voy a encontrar?, en nuestro caso los calendarios de Outlook. Esto lo definiremos mediante permisos, dependiendo de los permisos que le otorguemos a nuestra aplicación podremos acceder a una u otra aplicación.
La forma de abrir esa puerta es obteniendo una llave o token; una vez obtenido ese token tenemos vía libre para poder acceder a la aplicación registrada y por ende a los permisos que se hayan concedido.
El proceso por el que obtenemos ese token es la autenticación OAuth 2.0.
Este gráfico de propia y artesana creación describe el proceso de obtención de un token con el que poder realizar llamadas.
Hay más de un tipo de flujos de autorización, nosotros utilizaremos el flujo de concesión de código de autorización OAuth 2.0, esto es, usando nuestras credenciales obtenemos el token que luego utilizará nuestra aplicación.
Nuestra aplicación actuará en nuestro nombre.



Solicitamos un código de autorización a la entidad de autorización que nos solicitará identificarnos con usuario y contraseña, si todo es correcto nos devolverá un código de autorización.
Con ese código de autorización pediremos un token a la entidad encargada de los tokens.
Esta nos devolverá un token y con él ya podremos enlazar directamente con las aplicaciones sobre las que hayamos otorgado permisos en la configuración que veremos a continuación.

Debemos entrar en portal Azure y registrarnos con la cuenta que acabamos de crear de Outlook.
Tras una serie de pantallas y confirmaciones de códigos llegaremos a esta pantalla:

En la parte superior tenemos un apartado para buscar lo que necesitamos, en este caso: Registros de aplicaciones. Buscamos este icono:

Daremos de alta una nueva aplicación pulsando en Nuevo registro.
Le asignamos un nombre y elegimos el tipo de cuenta que vamos a utilizar para conectarnos.
Lo habitual sería la opción 1, ya que disponemos de una cuenta de Outlook en nuestro propio tenant, junto con nuestro Business central en el mismo tenant (directorio de Azure propio en el que estará alojado todo producto Microsoft que contratemos), pero para el caso del ejemplo utilizaremos la opción 2 y así poder utilizar una cuenta personal, que es la que hemos creado

En URI de redirección elegiremos tipo web y debemos indicar la ruta donde estará nuestro Business central terminada en OAuthlanding.htm como se ve en la imagen. La ruta debe ser https o http://localhost 

Una vez rellenamos los campos pulsamos en Registrar.
Vamos avanzando, pero aún restan cosas por definir en nuestra puerta, sólo la hemos pintado (el correcaminos sabe algo que nosotros no 😂)


Nos encontraremos con una página similar a esta



Ahora necesitamos 2 cosas:
  • Otorgar los permisos necesarios a nuestra aplicación, en este caso los relacionados con los calendarios de Outlook.
  • Crear un secreto, que será utilizado para poder obtener el token de llamada final.

Para otorgar los permisos, pulsamos en el menú lateral izquierdo en permisos de API y una vez dentro, en Agregar un permiso

Elegimos Microsoft Graph


Y para nuestro ejemplo usaremos permisos delegados, esto es, una vez indiquemos quienes somos, la aplicación usará nuestros permisos o credenciales para ejecutar las acciones, la aplicación (Business central) actúa en nuestro nombre.
Una vez pulsamos en delegados, localizamos el grupo Calendars y escogemos Calendars.ReadWrite, vamos a permitir que la aplicación lea y escriba en nuestros calendarios.


Pulsamos en agregar permisos y el que acabamos de marcar se añadirá a la lista de permisos.
Es obvio que con este permiso indicamos que nuestra puerta sólo tiene acceso a los calendarios de Outlook, pero nuestra puerta podría dar acceso a más aplicaciones (OneDrive, Teams, ...) en caso de otorgarle los permisos suficientes o necesarios.

Ahora en el menú lateral izquierdo elegimos Certificados y secretos y crearemos uno nuevo


Aquí simplemente hay que otorgarle un nombre, es indiferente, y una duración, esto es, este secreto podremos utilizarlo durante el tiempo que indiquemos, una vez caduque, deberemos crear un nuevo secreto. El máximo son 24 meses


Una vez creemos el secreto deberemos copiar el valor de este antes de cerrar la pantalla, ya que de lo contrario, al volver a esta pantalla ya no será posible copiarlo

Pulsamos copiar el valor, marcado en verde en la imagen y lo anotamos.
Con esto ya habríamos finalizado y sólo resta recopilar la información necesaria, recordemos que ya tenemos anotado el valor del secreto.
Pulsamos en el menú lateral izquierdo en información general y en esta pantalla copiamos y anotamos el valor de Id. de aplicación (cliente)


Ahora pulsaremos en Puntos de conexión y copiaremos las rutas de autenticación y de token:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token



En caso de haber creado esta aplicación eligiendo el punto 1 en la primera imagen (sólo cuentas de este directorio organizativo) las rutas tendrán otro aspecto siendo sustituida la palabra common por el id del tenant de Azure que nos corresponda.

Pues ... ya tenemos nuestra puerta creada


He intentado dar explicaciones de todo lo que íbamos haciendo para comprender el por qué de todo ello.
Finalizamos el post aquí, aislando de esta manera la configuración de la programación.

Espero que os sea de utilidad.

Publicar un comentario

Añade comentario (0)

Artículo Anterior Artículo Siguiente