SharePoint Saturday Madrid. Sesión sobre Azure Search

Muy buenas a todos!

Llevo unos meses sin actualizar el blog, y pido disculpas por ello. La verdad, es que el trabajo está ocupando gran parte de mi tiempo y no encuentro el momento de seguir contándoos cosas sobre desarrollo que encuentro muy interesantes.

Ayer se celebró la primera SharePoint Saturday en Madrid que ha estado organizada por las comunidades de usuarios y que fue un rotundo éxito. Tuve la oportunidad de participar no solo como parte del Staff y de la organización del evento (aunque debo reconocer que me hubiera gustado poder colaborar más) sino también como Speaker con la sesión “Using Azure Search to build Office 365 search driven solutions”. Os dejo una foto de todo el staff y speakers, que han hecho posible que el nivel del evento sea increíble, !Gracias a todos!.

Ch3kvCiWwAEr5y6

Quiero aprovechar la oportunidad para agradecer a todos los asistentes a la sesión, espero que os gustara y la encontrarais interesante. Para los que no pudisteis asistir he subido tanto el contenido de la presentación como el código de las demos que realicé para que las tengáis disponible.

Presentación de la sesión

Código en GitHub

https://github.com/jcroav/AzureSearch-Office365

 

Espero poder retomar el blog en las próximas semanas, a partir del evento de ayer, ya tengo varios temas que creo que son muy interesantes compartir con todos.

Saludos, hasta la próxima

[Eventos]: SharePoint Saturday Madrid

Captura de pantalla 2016-03-08 a las 22.23.29.png

Muy buenas,

Pues bueno chicos, como ya sabéis, ya está aquí. Después de varios meses de run run, hace poco más de un mes que se confirmó que el próximo 7 de Mayo se celebrará en Madrid el primer SharePoint Saturday en las oficinas de Microsoft en el parque empresarial de la finca en Pozuelo de Alarcón.

Este evento, organizado por las comunidades de usuarios y de repercusión internacional, como sabéis está centrado en la tecnología de SharePoint y Office 365 y a él asisten los mejores speakers nacionales  y algunos internaciones. Es un evento de comunidad y para la comunidad y os animo a todos a estar atentos y hacer seguimiento al evento y ver la evolución del mismo.

Actualmente, está abierto el Call4speakers y Call4sponsors

Para todos los que queráis tener toda la información completa sobre el evento os dejo el enlace al mismo

http://www.spsevents.org/city/Madrid/Madrid2016/home

No dejéis de seguir de cerca el evento y las noticias sobre el mismo. Y espero que nos podamos ver todos por allí. Yo ya he mandado algunas sesiones, espero que finalmente sean elegidas. Si no, seré asistente si o si. Un evento de estos no te lo puedes perder.

Un saludo a todos

Número #27 de CompartiMOSS y nueva colaboración

Muy buenas a todos,

El pasado lunes se publicó un nuevo número de la revista CompartiMOSS con contenido muy interesante sobre SharePoint, Office 365 y Azure. La revista está haciendo de forma muy natural una transición muy interesante hacia incluir contenido relacionado con Office 365 y Azure además de continuar con la temática de SharePoint.

A continuación os dejo un índice de todos los artículos interesantes que podréis encontrar en el número que acaba de salir:

  • Configurando Azure Directory Services para Office365 por Darwin Castro Marín
  • ENMARCHA: Un Framework Open Source para agilizar el desarrollo en SharePoint por Adrian Diaz Cervera
  • Entrevista Enrique Rhenals Bárcenas por Enrique Rhenals Bárcenas
  • Usando Azure Search en soluciones de búsqueda para Office 365 por José Carlos Rodríguez Avilés
  • ¿Es Project Server / Online realmente multiidioma? por José Rafael García
  • ¿Qué son las PowerApps de Microsoft? – Creando nuestra primera aplicación por Sergio Hernandez Mancebo
  • Conectores para Grupos de Office 365 por Ruben Toribio
  • Conociendo a MinRole de SharePoint 2016 por Miguel Tabera Pacheco
  • Introducción al PnP Program y Provisioning framework por Luis Mañez
  • Particularidades de la instalación de una Granja de varios servidores de SharePoint 2016 por Juan Carlos Gonzalez Martin
  • SharePoint 2013 Client Side Rendering en detalle por José Quinto Zamora
  • StratusForms – ¿Adios InfoPath? por Luis Molina
  • ¿InfoPath se muere? por Gonzalo Marcos Ansoain
  • Integración de Powershell local con Powershell de Azure por Enrique Rhenals Bárcenas

Como podéis ver, de nuevo, la revista me ha dado la oportunidad de colaborar con ellos, en esta ocasión con un artículo relacionado con Azure Search y Office 365 que espero que disfrutéis. Es un tema que me ha resultado muy interesante desde siempre y que he tenido la oportunidad de conocer y quería compartir con todos. De hecho en el blog podréis encontrar artículos recientes sobre este tema.

Os dejo el enlace de la revista para que podáis acceder todos aquellos que os resulte interesante:

http://www.compartimoss.com/Revistas/Numero-27

De nuevo muchas gracias a la revista por permitirme colaborar con ellos y espero que os guste, os animo a leer el contenido de este número, es muy interesante y aprenderéis muchísimo.

Saludos

 

[Eventos]: Azure Search. ¿Qué es y cómo podemos usarlo en nuestros proyectos con Office 365?

Muy buenas a todos,

El próximo 16 de Marzo a las 16:00h, tendré la oportunidad de hacer mi primer WebCast en colaboración con la Comunidad de Office 365, el Grupo de Usuarios de SharePoint de España (SUGES) y la Office Platform Technical Community de Madrid (MadPoint).

En dicho WebCast podremos conocer el servicio que Azure nos proporcionar para desarrollar una experiencia de búsqueda robusta en nuestros proyectos. Además no solo veremos como configurarlo y ponerlo en marcha sino como combinarlo con la API Microsoft Graph para Office 365, de manera que podamos indexar contenido de servicios de Office 365 en el servicio de búsqueda de Azure.

Os dejo los datos del WebCast, os espero a todos, y por supuesto espero que os guste lo que vamos a ver .

Datos de Interés

Como os decía espero veros por ahí, y que disfrutéis con el contenido.

Un saludo a todos y gracias a todas las comunidades por darme la oportunidad de participar en este WebCast

Azure Logic Apps II: ¿Qué más puedo hacer?

Muy buenas a todos,

En la entrada anterior os mostré mis primeros pasos con las Logic Apps de Azure, y cómo se estaban presentando como una nueva alternativa para implementar flujos de trabajo y procesos de negocio que requirieran y usaran distintos servicios, y además lo hacían de una forma sencilla por medio de un diseñador.

Azure Logic Apps I: Primeros Pasos

Obviamente, en esta primera entrada, creé un proceso de negocio secuencial y sencillo, ejecutado manualmente que poca utilidad real tenía. En la entrada de hoy os quiero enseñar algunas de las opciones que nos ofrecen las Logic Apps y como pueden hacerlas muy interesantes, ya que nos permiten crear triggers en determinados conectores, implementar recursión, trabajar con arrays de datos, etc. Vamos a intentar ver todo esto en la entrada de hoy, para profundizar en el conocimiento de las Logic Apps y en lo que podemos hacer.

Usando Triggers en una Logic App

Una de las opciones de que disponemos a la hora de crear una Logic App, es asociar su ejecución a un Trigger de uno de los conectores, estos triggers pueden actuar de dos formas:

  • Por un lado, chequear de forma recurrente en busca de nueva información, y en caso de que exista, ejecutar el resto de pasos del proceso de negocio. Para evitar que la misma información sea consumida en varias ocasiones, se borrará del origen una vez pasada a la Logic App para su consumo (Poll triggers).
  • Por otro lado, se puede estar escuchando en un destino en busca de que ocurra un determinado evento (Push triggers).

No todos los conectores pueden actuar como triggers. En el siguiente enlace podréis acceder a la información que nos permite saber cuáles de los conectores pueden ser usados de esta manera y ampliar los conocimientos sobre los tipo de triggers, etc.

https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-connectors-list/

A modo de ejemplo se va a crear una Logic App que conecta una lista de peticiones de SharePoint con un proceso de negocio que añade las peticiones a una cola (Service Bus de Azure) y envía un mail cuando se recibe una nueva petición.

Captura de pantalla 2015-10-11 a las 17.16.03

En la Logic App que hay en la imagen anterior, podemos ver como se usa el conector de SharePoint Online como trigger. Este conector es de tipo (Poll triggers) por lo que su funcionamiento, en este caso, será el de buscar cada minuto, si hay nuevas peticiones y en su caso, añadir un mensaje en la cola del service bus de azure y mandar un mail al equipo de soporte.

Una vez configurados todos los conectores, salvamos y podemos probar la Logic App.

Captura de pantalla 2015-10-11 a las 17.16.42 Captura de pantalla 2015-10-11 a las 17.18.47

Captura de pantalla 2015-10-11 a las 17.18.28

En la prueba se puede ver cómo una vez creada la petición, cuando se ejecuta la Logic App, el service bus recibe el mensaje correctamente.

Recursión en las Logic Apps

Para los siguientes apartados, se va a usar la misma Logic App. En este caso, cada cierto tiempo se recorren todas las peticiones y si alguna de ellas tiene la palabra ‘Test’ se envía un mail.

Captura de pantalla 2015-10-11 a las 18.39.31

Las Logic Apps nos permiten crear procesos de negocio que se ejecuten de forma recursiva con una programación preestablecida. Para ello, como se ve en la Logic App que hemos creado para este ejemplo, se usa el conector “Recurrence” al principio de la mismaUna vez insertado en el diseñador tenemos que indicar la planificación y validarla, y habremos preestablecido la perioricidad con la que queremos que se ejecute nuestra Logic App.

Trabajando con Arrays en nuestras Logic Apps

Los conectores pueden trabajar con arrays de datos. Un conector podría devolver un array y se podría ejecutar el siguiente conector en un bucle para cada uno de los elementos de dicho valor devuelto.

En el ejemplo anterior, esto se puede ver con los dos conectores de SharePoint OnLine que se han utilizado, uno de ellos, devuelve una lista con los Id de las peticiones que hay registradas, y el otro, para cada id devuelve la información completa de la petición.

Captura de pantalla 2015-10-11 a las 18.39.52

Como podemos ver, además el segundo conector, devuelve un array con toda la información de las peticiones. Si queremos configurar un conector para trabajar con un array, debemos hacer click sobre la opción de menú superior derecha del conector y pulsar sobre “Repeat over a list”. 

Captura de pantalla 2015-10-11 a las 19.20.03

A continuación, indicamos el array sobre el que queremos ejecutar dicho conector.

Captura de pantalla 2015-10-11 a las 19.24.04

Usando condicionales

Por último, otra de las opciones que nos permiten las Logic App es ejecutar un conector bajo unas determinadas condiciones. En la Logic App que hemos creado anteriormente y que estamos usando como ejemplo, se ha usado en el conector de Office 365.

Captura de pantalla 2015-10-11 a las 18.40.06

En este caso además, vamos a evaluar la condición para todos los elementos del array devueltos por el conector anterior. Para insertar una condición tenemos que hacer click en el menú superior derecho del conector y en “Add a condition to be met”.

Captura de pantalla 2015-10-11 a las 19.32.33

Esto nos abre un recuadro, como el que se en la imagen inicial donde podremos añadir la condición que queramos. Las condiciones pueden resultar algo complejas al principio. Pueden ser simples como la que se ha creado en el ejemplo, o combinar or, and, etc. Como en cualquier operación lógica. Os dejo algunos enlaces de donde podéis sacar información de cómo hacer estas condiciones y todos los operadores que tenéis disponibles. Los dos primeros son ejemplos de cómo hacer condiciones que he usado para entender la forma de trabajar, y el último es la web de referencia de la msdn con todas las opciones de operadores que tenemos para usar.

http://devslice.net/2015/05/azure-logic-app-conditions-success-and-failure/

http://www.bizbert.com/bizbert/2015/03/25/Azure+App+Service+How+To+Implement+Conditional+Logic+And+Loops+In+A+Logic+App.aspx

https://msdn.microsoft.com/en-US/library/azure/dn948512.aspx

Y esto es todo por hoy, he podido profundizar mucho más en las opciones que permiten usar las Logic Apps, con lo que se ha podido ver el abanico de oportunidades que tenemos disponible, y seguro que empezar a tenerlas en cuenta como solución a nuestros Flujos de Trabajo y procesos de negocio.

¿Esto es todo?, si le habéis echado un vistazo a los conectores, seguro que os habéis planteado que estos pueden ser limitados a la hora de implementar un proceso de negocio en nuestros sistemas. Y puede ser cierto, así que en próximas entradas veremos cómo crear nuestros propios conectores, para lo que tendremos que adentrarnos en el concepto de API Apps.

Un saludo a todos.

Azure Logic Apps I: Primeros Pasos

Muy buenas a todos,

Hoy quiero seguir avanzando en el conocimiento de los servicios que nos ofrece Azure para desarrolladores, que son muchos. En anteriores entradas, os he hablado de cómo usar los WebJobs para crear TimerJobs en SharePoint OnLine y del Service Bus de Azure y algunas de sus opciones:

https://elblogdelprogramador.wordpress.com/2015/06/04/timer-jobs-para-sharepoint-online/

https://elblogdelprogramador.wordpress.com/2015/07/01/primeros-pasos-con-el-service-bus-de-azure-las-colas/

https://elblogdelprogramador.wordpress.com/2015/07/07/el-service-bus-de-azure-los-temas/

Hoy os quiero mostrar las Logic Apps de Azure, un servicio relativamente nuevo que nos ofrecen desde Azure e intentaré, como siempre, relacionarlo de alguna forma con SharePoint OnLine y Office 365. En esta primera entrada, de lo que espero que sea una serie en la que pueda profundizar mucho más en las Logic Apps, os quiero contar en qué consisten, como crearlas y cómo usarlas de una forma sencilla.

¿Qué son las Logic Apps?

Para explicar lo que son las Logic Apps, aunque ahora os mostraré un extracto con lo más importante, lo que os recomiendo es acudir a la página oficial de Azure.

https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-what-are-logic-apps/

Las Logic Apps permiten la automatización en la ejecución de procesos de negocio y flujos de trabajo creados por medio de un diseñador visual fácil de usar. Estos flujos de trabajo ejecutan una serie de pasos y se basan en conectores que permiten trabajar sobre distintos entornos con todas las garantías de seguridad necesarias. Permiten integrar tecnologías como SharePoint (Online y Server), Office 365, CRM, SQL, redes sociales, etc.

Los conectores son el elemento fundamental en el que se basan las Logic Apps. Éstos nos proporcionan acceso a datos y servicios y se conectan entre ellos para generar los procesos de negocio. Además, algunos de ellos pueden ser utilizados como triggers. La lista completa de conectores la podéis encontrar en el siguiente enlace.

https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-connectors-list/

¿Cómo podemos crear una Logic App?

A continuación, vamos a ver los pasos que debemos dar para crear una Logic App sencilla que conecte SharePoint OnLine y use servicios de Office 365. Para poder trabajar con Logic Apps, deberemos irnos al portal de vista previa de Azure.

1.- Una vez ahí vamos a Nuevo->Web y móvil->Logic App.

Captura de pantalla 2015-10-10 a las 13.34.51

2.- A continuación nos aparecen los parámetros de configuración de la Logic App, que tendremos que configurar. Indicamos el nombre y creamos un nuevo plan de servicio de aplicaciones.

Captura de pantalla 2015-10-10 a las 13.35.04

3.- El tercer paso, para terminar de configurar la Logic App es establecer el plan de precios y el grupo de recursos, como vemos en las imágenes que hay a continuación.

Captura de pantalla 2015-10-10 a las 13.35.34

Captura de pantalla 2015-10-10 a las 13.36.15

4.- Para crear la Logic App, pulsamos en crear y esperamos que se aprovisione la misma, tras esto ya podremos acceder para utilizar el diseñador y crear la lógica de negocio. Si entramos en la Logic App que se acaba de crear, tendremos todas las opciones de configuración, para acceder al panel de diseño, pulsamos sobre Triggers and actions.

Captura de pantalla 2015-10-10 a las 13.36.50

5.- Esto nos lleva a la siguiente pantalla, donde podemos seleccionar una plantilla o empezar un proceso de negocio desde 0. Pulsamos en Create from Scratch y nos encontraremos con el diseñador.

Captura de pantalla 2015-10-10 a las 13.37.22

6.- A continuación aparece la imagen con el diseñador que os encontraréis para configurar la lógica de la Logic App. En la parte superior el menú, con la opción de guardar o descartar cambios, y la posibilidad de ver el diseñador o la vista de código de la logic app principalmente. La parte central es donde se van configurando los distintos pasos, y en la parte derecha, tenemos todos los conectores que podemos añadir a nuestra Logic App.

Si queremos poder ejecutar la Logic App manualmente tenemos que indicarlo expresamente en el recuadro que nos aparece, en otro caso se iniciará por medio de un trigger que habrá que configurar o a partir de un temporizador.

Captura de pantalla 2015-10-10 a las 13.37.36

7.- En esta ocasión, vamos a añadir dos conectores, uno para SharePoint Online y otro para Office 365, el primero para añadir un elemento en una lista de mi subscripción de SharePoint Online y el segundo para enviar un mail desde mi cuenta de Office 365.

Captura de pantalla 2015-10-10 a las 13.38.02

8.- Para configurar el conector de SharePoint OnLine, tendremos que indicar la Url del sitio de SharePoint y la Url relativa de la lista con la que queremos operar. Además tendremos que autorizar el acceso del conector por medio de nuestro login en SharePoint OnLine. Una vez realizados estos pasos correctamente, nos pedirá que seleccionemos la acción que queremos realizar. En nuestro caso hemos seleccionado añadir un item en la lista. Una vez configurados los parámetros (indicados los campos de la lista), podemos salvar y continuar adelante.

Captura de pantalla 2015-10-10 a las 14.05.50

9.- Con el conector de Office 365, debemos hacer el mismo proceso, será necesario que nos autentiquemos para poder operar con él. Una vez hecho esto, podremos seleccionar entre varias opciones, en este caso hemos indicado enviar un email, donde habrá que indicar el destinatario, asunto y cuerpo del correo electrónico.

Captura de pantalla 2015-10-10 a las 15.27.33

10.- El último paso tras salvar la configuración del conector es guardar la lógica de negocio generada. Entonces, podremos pasar a probarla.

Probando la Logic App que hemos creado

Para probar la Logic App, vamos al panel principal y le damos a Run Now (este botón solo estará habilitado si hemos indicado la opción de iniciar manualmente.

Captura de pantalla 2015-10-10 a las 13.50.28

Si la ejecutamos y accedemos al sitio de SharePoint y al correo electrónico, vemos que la Logic App se ha ejecutado correctamente.

Captura de pantalla 2015-10-10 a las 15.29.03

Captura de pantalla 2015-10-10 a las 15.29.27

El ejemplo de hoy carece de una lógica real, el único motivo era mostrar cómo se tienen que crear las Logic Apps y lo sencillo que resulta conectarlas con SharePoint OnLine y Office 365. Se trata de un ejemplo secuencial y que se ejecuta manualmente, pero tenemos muchas más opciones a la hora crear estos procesos de negocio, como pueden ser, triggers, temporizadores, bucles, etc.

Y hasta aquí esta introducción sobre Logic Apps, ¿El futuro de los Flujos de Trabajo?, en mi opinión, en un entorno en el que cada vez más tenemos una gran variedad de tecnologías para tener en cuenta en nuestros proyectos, un motor como este, es un muy buen candidato, ya que nos permite trabajar sobre todas ellas y además de una forma sencilla.

En posteriores entradas, veremos más en profundidad qué podemos hacer en la definición de procesos de negocio con las Logic Apps, e incluso cómo crear nuestros propios conectores.

Como siempre, espero que os haya resultado interesante.

Un saludo a todos.

La nueva API de Office 365 Unificada

Buenas tardes a todos,

Esta semana desde Microsoft se lanzó la noticia de la aparición de una nueva API de Office 365 unificada, que busca facilitar y estandarizar todas las operaciones que se pueden realizar contra los servicios de Office 365 a través de su API, además de añadir nuevas opciones y servicios a la misma. Ayer tuve la oportunidad de echar un vistazo a esta API unificada y me pareció que mejora mucho la versión anterior y particularmente me gusta más esta línea que la que llevaba hasta ahora.

Hoy os voy a contar en qué consisten todas estas mejoras y enseñaros un ejemplo de cómo trabajar con ella que podréis comparar con un ejemplo que publiqué hace un tiempo sobre el uso de la API de Office 365 que hasta ahora teníamos vigente. Esta versión de API unificada está aún en Preview, por lo que aún pueden haber mejoras o modificaciones, no obstante lo que veremos hoy es la filosofía de la misma.

Antes de entrar de lleno os voy a dejar una recopilación de enlaces que creo que son fundamentales para entender la nueva API Unificada.

http://dev.office.com/unifiedAPIs

https://msdn.microsoft.com/office/office365/HowTo/office-365-unified-api-overview#msg_how_learn_unified_api

https://msdn.microsoft.com/en-us/office/office365/howto/get-started-with-office-365-unified-api

https://msdn.microsoft.com/en-us/office/office365/howto/office-365-unified-api-reference

http://www.vrdmn.com/2015/05/using-office-365-unified-api-in-aspnet.html

¿En qué consiste esta API de Office 365 Unificada?

La nueva API de Office 365 Unificada pretende seguir ofreciendo a los desarrolladores la oportunidad de utilizar los servicios de la suite de productividad de Office 365, pero de forma unificada y a través de una API REST, que nos permite hacer todas las operaciones de una forma mucho más sencilla y alineada con el “standard” de las API de servicios web hoy en día.

Además añaden acceso a nuevos servicios dentro de Office 365, quedando ahora el mapa de entidades de la siguiente forma:

O365_unified_API_entities

Con la API tradicional para usar algunas de las entidades disponibles teníamos siempre que realizar las siguientes acciones:

  • Usar el servicio discovery para encontrar los endpoints
  • Determinar la URL de los servicios a los que la app se quería conectar
  • Obtener y manejar el token de cada servicio y hacer la petición a cada uno de ellos directamente

Desde ahora, por medio de esta nueva API unificada, evitaremos estas operaciones para sustituirlas por una simple API REST. Además no es necesario descubrir y navegar a cada uno de los diferentes endpoints para cada servicio ya que todos comparten uno mismo, con lo que comparten también el sistema de autenticación y autorización. Estos nos permite además fácilmente consumir desde cualquier herramienta o lenguaje de programación esta API.

¿Cómo podemos usar la API?

Vamos a ver ahora algunas de las URLs que tenemos disponible en la API REST unificada para acceder a las distintas entidades de Office 365.

La Url de referencia al servicio la tenemos en la siguiente dirección https://graph.microsoft.com/{version}. A partir de aquí, voy a dejar distintos ejemplo de cómo podemos usar esta referencia para acceder a las distintas entidades.

Acceder a One Drive
https://graph.microsoft.com/{version}/me/files
Accediendo al servicio de Exchange OnLine
https://graph.microsoft.com/{version}/me/Messages
Accediendo a los usuarios de mi tenant
https://graph.microsoft.com/{version}/{myOrganization}/users
Accediendo a los grupos de Office 365
https://graph.microsoft.com/{version}/{myOrganization}/groups
Aplicaciones registradas en Azure AD
https://graph.microsoft.com/{version}/{myOrganization}/applications

Obviamente estas son solo algunas de las URLs principales de los servicios. En el enlace a la referencia de la API podemos ver todas las opciones y todas las oportunidades que tenemos disponibles y os animo a que naveguéis por ahí para ver todo lo que se puede hacer, que como veréis es mucho.

Ejemplo de uso de la nueva API de Office 365 Unificada

Para terminar con el artículo, vamos a ver un ejemplo de código de cómo podemos usar en una aplicación MVC esta nueva API REST.

Para poder usar la API REST unificada de Office 365, tenemos en primer lugar que registrar nuestra App en Azure Active Directory tal y como se comentaba en la entrada que os enlazo a continuación:

Registrando una aplicación en Azure Active Directory

Lo único que tenemos que hacer diferente a cuando íbamos a usar la versión anterior es a la hora de establecer los permisos para la app que estamos registrando. En esta ocasión deberemos añadir los permisos para la nueva API unificada, como se ve en la imagen siguiente, tenemos esta opción disponible.

unifiedAPI

Una vez que ya hemos registrado adecuadamente nuestra app, podemos pasar al código de la aplicación. En la demo que vamos a ver, voy a leer los archivos y directorios de mi One Drive, tal y como hice en el ejemplo con la API anterior. He creado una aplicación MVC y todo el código por simplicidad en el ejemplo, lo he puesto en la misma acción del controlador, aunque si accedéis al último enlace de los que indiqué arriba, podréis ver como se podría organizar el código a través de varias acciones en una aplicación MVC. Vamos a ver el código y luego lo explicaré destacando los puntos más importantes del mismo:

public async Task<ActionResult> Files(string  code)
{
       string authCode = Request.Params["code"];

       // The url in our app that Azure should redirect to after successful signin
       string redirectUri = Url.Action("Files", "Home", null, Request.Url.Scheme);

       var authContext = new AuthenticationContext("https://login.microsoftonline.com/common");

       if(authCode == null)
       {

           // Generate the parameterized URL for Azure signin
           Uri authUri = authContext.GetAuthorizationRequestURL("https://graph.microsoft.com/", ConfigurationManager.AppSettings["ida:ClientID"],
               new Uri(redirectUri), UserIdentifier.AnyUser, null);

           // Redirect the browser to the Azure signin page
           return Redirect(authUri.ToString());
       }

       ClientCredential creds = new ClientCredential(
           ConfigurationManager.AppSettings["ida:ClientID"],
           ConfigurationManager.AppSettings["ida:Password"]);

       // Get the token
       var authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(
           authCode, new Uri(redirectUri), creds, "https://graph.microsoft.com/");

       // Save the token
       string accesstoken = authResult.AccessToken;

       // Make request
       using (var client = new HttpClient())
       {
           string endpointUri, resourceId;

           using (var request = new HttpRequestMessage(HttpMethod.Get,
             "https://graph.microsoft.com/beta/me/files"))
           {
               request.Headers.Add("Authorization", "Bearer " + accesstoken);

               using (var response = await client.SendAsync(request))
               {
                   List<OneDriveFile> modelList = new List<OneDriveFile>();

                   var content = await response.Content.ReadAsStringAsync();
                   foreach (var item in JObject.Parse(content)["value"])
                   {
                       OneDriveFile newFile = new OneDriveFile
                       {
                          Name = item["name"].ToString(),
                          Size = double.Parse(item["size"].ToString())
                       };

                       modelList.Add(newFile);
                   }

                   ViewBag.files = modelList;

                }
            }
       }

       return View();
}

Vamos a destacar tres aspectos fundamentales de este código:

  • Lo primero que haremos en nuestro código es comprobar si nos hemos autenticado contra Azure Directory, tal y como hacíamos con la API tradicional, y en el caso de que no lo esté nos redirigirá a la página correspondiente para autenticarnos, para todo el proceso de autenticación y autorización se va a usar como hacíamos anteriormente la librería ADAL que tenemos en Nuget. (Líneas 10 a 19)
  • El siguiente paso, es capturar el token de acceso para obtener autorización al hacer las peticiones REST. (Líneas 26 a 30)
  • En el último paso usaremos un cliente Http que nos proporciona C# para hacer llamadas a la API y procesar las respuestas. (Líneas 33 a 62)

Las diferencias con respecto al uso de la versión anterior de la API para Office 365 basada en el servicio discovery la podemos ver con la entrada que publiqué sobre este tema. Nos obstante son obvias, por la facilidad con la que ahora podemos acceder a la API de Office, sin tener que hacer todos los pasos para simplemente acceder al servicio que eran necesarios. Esta es la entrada que os comentaba.

Usando la API de Office 365

Y nada más por hoy, como siempre espero que os resulte interesante, a mi esta nueva versión unificada me ha gustado mucho. Os recomiendo echar un vistazo por todos los enlaces que os he comentado, y ver las oportunidades que nos ofrece esta API, como dije al principio me parecen muy interesantes.

Un saludo a todos.