Recientemente publiqué un artículo de cómo utilizar las API’s de Office 365 en aplicaciones móviles nativas desarrolladas con Xamarin. Microsoft continúa con su pensamiento de que se debe consumir cualquier servicio de Azure desde cualquier parte y cualquier dispositivo. Por este motivo, también desde código JavaScript, va a ser posible autentificar nuestros desarrollos y consumir los servicios de Office 365. En este post vamos a ver cómo en un desarrollo utilizando Cordova, podemos consumir las API’s de Office 365.
Herramientas utilizadas para este desarrollo
- Visual Studio 2013 Update 3 con los complementos para Cordova
- Office 365 Tools
- Microsoft Office 365 APIs Client Libraries for Cordova Applications
Nota: También es posible bien hacer uso de Visual Studio 2015. En caso de no querer utilizar este IDE, tendrías que buscar alguna forma de obtener los ficheros JS del paquete de Nuget para poder realizar la autenticación.
Manos a la obra
- Abrimos Visual Studio y nos creamos un Proyecto JavaScript-> Apache Cordova Tools.
- Agregamos el paquete de Nuget de Microsoft Office 365 API’s Client Libraries for Cordova Applications.Este paquete nos añade los siguientes ficheros dentro de nuestra solución:
- Ahora el siguiente paso es indicar que establezca la conexión con Office 365. Para ello, tendremos que añadir dentro de nuestro proyecto un código como el siguiente:
var authContext = newO365Auth.Context(); authContext.getIdToken('https://outlook.office365.com/') .then(function(token) { // Promise callback: Authentication succeeded client = newExchange.Client( 'https://outlook.office365.com/ews/odata', token.getAccessTokenFn('https://outlook.office365.com') ); });
Este código lo que hace es buscar el token de Office365 que debe de estar en nuestro navegador. En caso contrario, el siguiente paso es solicitar la autenticación de Office 365 por pantalla.
- Una vez ya estamos autenticados, podemos realizar consultas contra las API’s de Office 365. Por ejemplo, para mostrar todos los correos, podríamos utilizar un código como el siguiente:
/ Use getFolder to access Inbox folder client.me.folders.getFolder("Inbox").fetch() .then(function(folder) { // Retrieve all the messages folder.messages.getMessages().fetch() .then(function(mails) { // mails.currentPage contains all the mails in Inbox }); });
Otro ejemplo sería si queremos obtener todos los contactos, podríamos utilizar el siguiente código:
client.me.contacts.getContacts().fetch() .then(function(contacts) { // contacts.currentPage contains the contacts information });
Estos últimos métodos están incluidos dentro de las librerías js que nos hemos descargados de Nugget, pero también se pueden realizar consultas directas a la API Rest, debido a que ya hemos obtenido las credenciales.
Otro aspecto que hay que tener en cuenta es que para utilizar esta aplicación, debemos de obtener un ID de aplicación en Azure e indicar que tipos de permisos son los que va a tener el usuario. Como: permisos para leer contactos, email, ficheros, etc. Para ver cómo poder generar este ID, os recomiendo el post que escribí hace poco: «Registrar una Aplicación en el portal de Azure».
Conclusión
Lejos quedan los tiempos en los que Microsoft se cerraba y solamente facilitaba la vida en sus desarrollos a tecnologías propias de Microsoft. Ahora ha visto que para poder llegar a un mayor número de desarrolladores es necesario que sus servicios tengan todas las API’s necesarias. A parte de este hecho, tenemos que estar contentos por trabajar en una plataforma muy rica y potente para los desarrolladores, lo que hace que cada vez se ofrezcan mejores soluciones a los clientes.
Referencias
Office 365 Client APIs for Hybrid Mobile Apps