Categorías: Azure javascript Office 365

Utilizar las API’s de Office 365 en aplicaciones móvil híbridas

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

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

  1. Abrimos Visual Studio y nos creamos un Proyecto JavaScript-> Apache Cordova Tools.
  2. 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:
  3. 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.

  4. 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

 

Compartir
Publicado por
Adrián Díaz

Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)