Acceso a Hotmail, Messenger y Skydrive desde Windows Phone, con Live Connect SDK – Parte I

Una de las cosas que eran de extrañar en el ecosistema de Windows Phone, era que nosotros podíamos (sobre todo ahora con Mango) acceder a nuestros contenidos alojados en Skydrive, almacenar información de forma fácil, etc..  pero no podíamos hacer esto mismo desde una aplicación desarrollada por nosotros mismos.

Existía en codeplex una herramienta o API cliente que nos permitía hacer alguna que otra cosa, el Skydrive .Net API Cliente, pero nada serio…..

Lo mismo pasaba con el acceso nativo a nuestros contactos de Hotmail, o directamente a las conversaciones de Windows Live Messenger.

Pues bien, esto tiene los días contados, ya que tras el reciente evento de BUILD Windows en donde se presento el flamante Windows 8, Microsoft a liberado la primera versión de su live connect SDK, actualmente la versión Developer preview, que nos permite acceder a Identity (profiles de usuarios), Hotmail (contactos y calendarios), Messenger (Mensajería instantánea)  y SkyDrive (Ficheros y fotos).

Dicho SDK, lo podemos descargar desde esta pagina. La versión final de este SDK se espera para este próximo noviembre, mientras tanto podemos visitar regularmente el site http://dev.live.com para enterarnos de mas cosas sobre este SDK y otras interesantes sobre el ecosistema de Live.

Bueno, pues manos a la obra, lo primero que debemos de saber es que para poder usar el live connect nuestra aplicación debe de cumplir dos requisitos:

  • Disponer de un Client ID.

El Client ID es un identificador único de nuestra aplicación en el ecosistema de Live, para conseguir dicho Client ID, es necesario acudir al Live Connect App management site y crear una aplicación, indicando el nombre principal y el lenguaje de la aplicación. Una vez hecho esto se nos proporciona ese Client ID.

LiveConnect1

  • Indicar un Redirect Domain.

Es el dominio que se usara para intercambiar datos, tokens y mensajes con la aplicación, mas adelante explicare que significa esto. Para indicar este Redirect Domain, deberemos de pinchar dentro de nuestra nueva aplicación creada dentro de Live Connect App management site y editar la sección de Settings. Una vez allí en el apartado de API settings, deberemos de indicar el Redirect Domain.

LiveConnect2

 

Nota: Este ultimo dato, el Redirect Domain, no es necesario gestionarlo si nuestra aplicación no va a utilizar single-sign-on o OAuth, simplemente se usara para indicarle al usuario a la hora de que este valide la autenticación o sign in de nuestra aplicación en Live, de que Uri se intenta acceder.

Muy importante en nuestro caso también, es que deberemos de marcar que la aplicación que se va a conectar con Live Connect es una aplicación Móvil.

Una vez que disponemos de estos dos datos, vamos a pegarnos con el código:

Tras instalar el developer preview de Live Connect, disponemos de dos nuevos espacios de nombres que debemos de utilizar y referenciar, se trata de Microsoft.Live y Microsoft.Live.Controls.

Lo primero que vamos a ver es como logearnos desde una de nuestras aplicaciones en Windows Live, para ello existen dos formas esencialmente de hacerlo:

  1. Control SignInButton: LiveConnect3
  2. Control visual perteneciente al namespace Microsoft.live.Controls, que es en si mismo un control Button pero con unas características muy interesantes. Esta opción digo yo que la hayan incorporado para el tema de la estandarización de experiencia de usuario, pero bueno.

La verdad es que el control es bastante personalizable, pudiendo cambiar el logo que aparece, bordes, background, fuentes, texto para iniciar sesión, cerrar sesión, etc…

Simplemente deberemos de indicar dos propiedades de este control nuevo añadido; por un lado el .ClientId: “Cadena de texto con el famoso ClientId, obtenido en el paso anterior” y por otro lado la propiedad .RedirectUri, que será también una cadena de texto con la URL que hemos introducido anteriormente en la pagina de settings de Live.

En un principio esto es lo único que deberemos de indicar al control para poder hacer Sign In. Pero aun nos queda otra cosa bastante importante, los Scopes (ámbitos).

El usuario debe de dar su consentimiento para que una aplicación acceda a la distinta información que tiene contenida en los servicios de Live, ya sea Hotmail, Skydrive o Windows Live Messenger. La Api de Live Connect divide estos permisos o consentimiento que el usuario otorga en distintos niveles o categorías, estos son lo que se denominada “Scopes”. Existen 3 tipos de Scopes y en cada tipo un scope para cada una de las cosas que nosotros queramos hacer, según esta tabla.

Core Scopes  
Scope Función
wl.basic Acceso de lectura a la información básica de la cuenta
wl.offline_access Capacidad de que una aplicación lea y actualice la información de la cuenta. Si no se indica este Scope, solo se podrá acceder cuando se inicie sesión en Live.
wl.signin Inicio de sesión único. Single Sign On.
Extended Scopes  
Scope Función
wl.birthday Acceso de lectura a la información del cumpleaños de un usuario, incluido el día de nacimiento, mes y año.
wl.contacts_birthday Acceso de lectura al día de nacimiento y mes de nacimiento de los contactos de un usuario.
wl.contacts_photos Acceso de lectura a los álbumes de un usuario, fotos y videos, y sus comentarios y etiquetas asociadas. También permite el acceso de lectura a cualquier álbum, foto o video que otro usuario haya compartido con el.
wl.emails Acceso de lectura a las direcciones de correo electrónico de un usuario.
wl.events_create Creación de eventos en el calendario.
wl.phone_numbers

Acceso de lectura a los números de teléfono del usuario.

wl.photos

Acceso de lectura a las fotos, videos y álbumes.

wl.postal_addresses

Acceso de lectura a la dirección postal del usuario.

wl.share Creación de actividad en el activity feed e indicar el mensaje de estado.
wl.work_profile Acceso de solo lectura a los datos de empleador y puesto de trabajo.
Developer Scopes  
Scope Función
wl.applications Acceso de lectura a las aplicaciones que los desarrolladores hayan creado para trabajar con Live Connect.
wl.applications_create Creación de nuevas aplicaciones con Live Connect en nombre de un desarrollador.

En este caso concreto, nosotros usaremos dos Scopes básicos, ya que de momento no queremos hacer mas que logearnos. Usaremos los scopes wl.basic y wl.signin.

Para ello en la propiedad .scopes de nuestro control indicaremos como una cadena de texto separadas por un espacio estos dos scopes.

signInButton1.Scopes = "wl.signin wl.basic";

Una vez que hemos hecho esto, al pulsar el botón «SigninButton”, nos aparecerá una pantalla de Windows Live, para que nos autentiquemos.

LiveConnect4

Si comprobamos la secuencia de pantallas de la imagen superior vemos que tras autenticarnos nos aparece una pantalla con los datos de nuestra aplicación y lo que deseamos hacer con la cuenta de Windows Live (según los scopes que hayamos indicado), para que el usuario de el visto bueno, en este caso como se ve nos dice que haremos: “Sign you in automatically”, correspondiente al scope wl.signin y “Access your name, gender, display picture, contacts and friends”, correspondiente al scope wl.basic.

  1. Programáticamente.

Como habíamos comentado anteriormente disponemos de dos formas de hacer sign in en la plataforma Live, la primera como hemos visto es a través del control personalizable SigninButton, pero existe también la opción de hacerlo de forma programática.

Para ello debemos de crearnos un objeto correspondiente a la clase LiveAuthClient, indicando en su construcción el ClientId y la RedirectUri, similar a lo que realizamos en el control físico.

Una vez hecho esto deberemos de crearnos un manejador al evento LoginCompleted de nuestro LiveAuthClient y disparar el método asíncrono .LoginAsync(), indicando como parámetro de entrada los o el scope que vamos a utilizar.

List<string> Scopes = new List<string>();

Scopes.Add("wl.basic");

Scopes.Add("wl.signin");

 

LiveAuthClient autenticado = new LiveAuthClient("00000000440XXXXX", "http://geeks.ms");

autenticado.LoginCompleted += new EventHandler<LoginCompletedEventArgs>(autenticado_LoginCompleted);

 

autenticado.LoginAsync(Scopes);

Una buena practica seria, utilizar el botón de Signin para la primera vez que realizamos la autenticación en Windows Live, tras esto cada vez que queramos autenticarnos de nuevo, lo realizaríamos ya de forma programática, ya que una vez autenticados no se nos va a volver a solicitar ni desde la pagina de Live el usuario y la contraseña, ni la aceptación de los scopes a usar, a no ser que estos cambien.

En el siguiente Post, trataremos la forma de manejar la información que de primeras nos proporciona el logueo con Live, para mas adelante adentrarnos en las posibilidades de integración con Skydrive.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *