Enlaces interesantes sobre programación en Windows Phone. II

Una semana mas recojo todos juntitos los enlaces que he ido encontrado por internet sobre programación en Windows Phone.

Nokia World.

Como todos sabréis esta semana se celebro en Londres el “Nokia World 2011”. Efectivamente este evento no fue directamente un evento de desarrollo pero creo que tuvo la suficiente importancia para el mundo Windows Phone, que todos deberíamos de haberlo echado un ojo. Si no fue así aquí tenéis los principales enlaces que generó:

Keynote.

Pagina principal en donde podremos ver entre otras cosas la keynote grabada del primer día, una entrevista a Ben Rudolph (el que regalaba móviles a los usuarios frustrados de BB) y videos introductorios sobre los nuevos Nokia Lumia con Windows Phone incorporado.

Entrevista de Kevin Shields y Joe Belfiore en “This is my Next”

Interesantísima entrevista entre Kevin Shields (Senior Vice Presidente del área de Smart Devices de Nokia) y Joe Belfiore (Vice Presidente del área de Windows Phone en Microsoft).

Otros enlaces.

Conexión de una aplicación Windows Phone 7 a un servicio RESTful hospedado en Windows Azure.

Articulo en el blog de Bruno Terkay, parte final de una serie de post relacionados con el acceso de dispositivos móviles a Windows Azure. En este se centra en el desarrollo para Windows Phone.

Windows Azure Toolkit for Windows Phone. V. 1.3.1

Seguimos con Windows Azure, en este caso con la nueva revisión del toolkit para la conexión de nuestras aplicaciones Windows Phone 7.

Casos de estudio en construcción de aplicaciones móviles en Windows Phone sobre Windows Azure.

Y el ultimo enlace relacionado con Windows Azure y la programación en Windows Phone, es esta pagina que nos enseña 3 casos de estudio en T-Mobile, Telefónica y Symon Communications en la programación de entornos y aplicaciones móviles conectadas a la plataforma de cloud de Microsoft.

HTML5 Mobile en Windows Phone 7.

Slides de una presentación de Ben Riga y el código fuente de la aplicación de ejemplo enseñando el concepto de cross pltatform con IE9 versión desktop y el IE9 de Windows Phone 7.

FAQ de Windows Phone Marketplace.

Pagina en donde se aloja el FAQ de la plataforma del marketplace de Windows Phone 7, en donde se puede encontrara mucha ayuda sobre los procesos de certificación y registro de nuestras aplicaciones.

Enlaces interesantes sobre programación en Windows Phone.

Copiando descaradamente una iniciativa de Juan Carlos Gonzalez, inaguro en mi blog unas entradas semanales, en las que indicare los enlaces mas interesantes que he encontrado por la red sobre programacion para Windows Phone.

Aqui el primer capitulo:

XAMLFinance – A Cross-platform WPF, Silverlight & WP7 Application.

Interesante articulo en The Code Project sobre la programación integrada entre WPF, Silverlight y WP7. Muy extenso, realmente merece la pena darle un vistazo.

Tutorial – Using Visual Studio Solution Configuration to Manage Free and Paid Game Versions

Tutorial sobre como poder manejar diferentes versiones de una aplicacion cuando queremos probar versiones completas, gratuitas o trials.

Project: Windows Phone Icons

Proyecto por el cual actualmente disponemos de 300 iconos con la licencia de creative commons para usarlos en nuestras aplicaciones.

eBook: Silverlight for Windows Phone Toolkit In Depth

Libro gratuito en formato eBook, sobre el manejo del windows Phone Toolkit

Understanding LINQ to SQL on Windows Phone 7.5

Articulo en Visual Studio Magazine en el cual realiza un repaso general a uso de SQL CE en Windows Phone “Mango”.

Testing your Windows Phone application prior to submit to the Marketplace is an essential task

Entrada en donde se detalla el uso de la herramienta de Testing de nuestras aplicaciones que se incorporo con el SDK de Windows Phone.correspondiente a Mango.

Dropbox for Windows Phone: Open source

Libreria Open Source, alojada en The Code Project, para manejar dropbox.

 

El lunes que viene mas…

Windows Phone Roadshow 2011

hh475625_banner-top-h-01(es-es,MSDN_10)

Bueno, como a estas alturas ya sabréis, Microsoft organizara en estos meses de Octubre y Noviembre un remake del evento americano denominado Phone Camps. Otros años estos eventos se llamaron el Mobility Show, ahora pasa a ser Windows Phone Roadshow, pero se debería de llamar Mango Roadshow.

Valladolid, Madrid, Barcelona, Sevilla, Bilbao y Santander son las ciudades elegidas para albergar dichos eventos, siendo este el calendario.

Tanto en Madrid como en Barcelona el segundo día será una especie de Hand of Lab y pequeñas charlas especificas.

Bueno, pues a la que iba, participare junto a 3 grandes tipos en el evento que se celebrara en Santander, seremos Eduardo Ortega, José Antonio Gallego, Josué Yeray y un servidor.

Edu Jose Antonio Yeray Rafa

 

Con el empeño y la tozudez de unos pocos, (gracias Juan Carlos) hemos conseguido convencer a Microsoft para que una de las sedes sea Santander, será uno mas del Roadshow y en él, entre los 4 intentaremos convencer a los mas agnósticos a que se pasen al desarrollo en Windows Phone.

La agenda será la siguiente:

Horario Charla / Tema Ponente
09:00-09:30 Registro y presentación Juan Carlos González
09:30-10:30 Por qué Windows Phone? Eduardo Ortega
10:30-12:00 Plataforma de desarrollo de aplicaciones y Juegos Eduardo Ortega y José Antonio Gallego
12:00-12:15 Descanso (café)  
12.15-13:15 Datos, Servicios y “Live Tiles” (Ventanas Vivas) Rafael Serna
13:15-14:00 Capacidades avanzadas de Windows Phone Josué Yeray
14:00-15:00 Descanso  
15.00-16:00 Multitarea en Windows Phone Josué Yeray
16:00-16:15 Descanso  
16:15-17:15 Desarrollo paso a paso y publicación de “Zombsquare” Eduardo Ortega y José Antonio Gallego
17:15-17:45 Cómo comercializar tus aplicaciones y juegos en el Marketplace Rafael Serna
17:45-18:00 Recursos, Ayudas e Iniciativas  

 

Y por si no lo sabíais, se repartirán gran cantidad de regalos (o eso intentaremos), entre los que destacan teléfonos móviles (si si de verdad), libros, cupones de descuento para registrarse en el AppHub, camisetas y alguna cosa mas.

Os esperamos en toda la gira, pero sobretodo os esperamos en Santander, que intentaremos que sea el mejor evento de todos.

Para abrir boca os dejo un video que han realizado Eduardo Ortega y José Antonio Gallego desde el CIIM, para explicar y presentar el evento.

Live connect SDK (II)–El núcleo de la cuenta.

En el primer post de esta serie supimos como poder hacer login contra nuestra cuenta de Windows Live, tanto utilizando el botón predefinido para ello o realizándolo de forma programática.

En esta segunda entrega de la serie dedicada al nuevo Live Connect SDK, veremos como una vez logueados podemos sacar la información contenida en nuestra cuenta, los datos específicos de la cuenta, sin entrar en ningún otro servicio de Live.

Al hacer login utilizamos solamente dos scopes, entre ellos el scope wl.basic, como vimos en la tabla de scopes, wl.basic nos permite acceder en modo solo lectura a la información básica de la cuenta y sus contactos.

Bueno pues eso es lo que vamos a hacer precisamente. Y en este caso es tan sencillo como decir pedid y se os dará.

Con esta frase tan, no se, religiosa, se resume el funcionamiento del sistema, simplemente deberemos de realizar una petición de información y de forma asíncrona esperar el resultado de esa petición de información.

Para todo ello deberemos de utilizar el objeto LiveConnectClient, que recogemos al logearnos y utilizar el método GetAsync.

El Método .GetAsync del objeto LiveConnectClient acepta dos sobrecargas del método, una de ellas nos solicita la USER_ID de la cuenta y la segunda sobrecarga, nos solicita tanto ese USER_ID como un objeto de estado. En nuestro caso usaremos simplemente la primera forma del método y le indicaremos el USER_ID de la cuenta, que en este caso se puede simplemente llamar usando la palabra “me”. Es decir recógeme mis datos. Como he comentado debemos de pedir y esperar para recibir, con lo que también deberemos de crear un handler al evento GetCompleted y esperar una respuesta.

Cliente.GetCompleted +=new EventHandler<LiveOperationCompletedEventArgs>(Cliente_GetCompleted);

Cliente.GetAsync("me");

A lo largo de la serie veremos muy a menudo el método GetAsync, muchas de las funciones que podemos hacer con Live Connect es como ya hemos comentado, pedir determinada información de la cuenta, pues este método será en el 90% de los casos el usado para ello. Obviamente cada objeto que llame a este método tendrá en el evento GetCompleted “asociado”, unos valores de retorno, en el caso que nos ocupa esos valores son los del objeto LiveOperationCompletedEvenArgs, el cual dispone de una propiedad que es la que nos proporcionara lo que buscamos, la propiedad “Result”, que básicamente es una lista del tipo iDictionary de clave valor, que nos proporcionara estos 8 elementos:

1 id Identificación de la cuenta (lo usaremos en otras partes y para otro tipo de peticiones) [string]
2 name Nombre que se visualiza de la cuenta. Nombre completo. [string]
3 first_name Nombre [string] admite nulos
4 last_name Apellidos [string] admite nulos
5 link Link directo al perfil publico de la cuenta en Live Connect [string]
6 gender Genero del usuario de la cuenta (male or female) [string] admite nulos
7 locale Localización de la cuenta, en mi caso es-ES [string]
8 updated_time Fecha y hora de la ultima vez que se modifico el perfil del usuario en formato ISO 8601 [string]

Existe la posibilidad de visualizar u obtener los datos de la cuenta anteriormente citados, mediante el método RawResult del objeto LiveOperationsCompletedEventArgs, que en vez de ser un iDictoriary como es Result, es una cadena de texto con toda la información de la siguiente manera:

{

   "id": "c5a73fd5793017e9", 

   "name": "Rafa Serna", 

   "first_name": "Rafa", 

   "last_name": "Serna", 

   "link": "http://profile.live.com/cid-c5a73fd5793017e9/", 

   "gender": null, 

   "locale": "en_US", 

   "updated_time": "2011-09-28T09:58:55+0000"

}

Imagen de la cuenta:

Una de las operaciones normales que realizaremos al acceder a Live, es obtener la imagen asociada a la cuenta. Para ello no usaremos específicamente el Live Connect SDK, ya que este, al menos de momento no nos proporciona esta opción. Usaremos la API REST, que también esta disponible para su uso.

Simplemente deberemos de crear un objeto del tipo BitmapImage, recordemos que esta dentro del namespace System.Windows.Media.Imaging, y crearlo desde la URL del comentado API REST, indicando la propiedad AccessToken del objeto LiveConnectSession que utilizamos nada mas loguearnos. Lo haremos llamando a la URL de la siguiente forma:

string ImagenURL = @"https://apis.live.net/v5.0/me/picture?access_token=" + LiveConnectSession1.AccessToken;

 

image1.Source = new BitmapImage(new Uri(imgUrl,UriKind.RelativeOrAbsolute));

Acceso a contactos y amigos.

Otra de las opciones de las que disponemos al loguearnos con la cuenta y utilizar el scope wl.basic, es el acceso a los datos de los contactos asociados a dicha cuenta y de los amigos de Windows Live Messenger.

Para ello deberemos de usar de forma similar a como hemos recibido la información de la cuenta el método GetAsync, pero indicando otra cadena de texto “me/contacts” para los contactos y “me/friends” para los amigos.

Dependiendo de lo que indiquemos, en el evento GetCompleted, mediante el objeto LiveOperationCompletedEventArgs se nos devolverá una cosa u otra.

En el caso de los amigos asociados a la cuenta la información es muy escueta, simplemente nos devuelve un array de objetos con dos propiedades, estos objetos están contenidos en el array denominado “data”.

1 id Identificación de la cuenta del amigo [string]
2 name Nombre completo del amigo [string]

Bastante mas extensa es la información que se facilita de los contactos asociados en la cuenta, en donde a través de un array también llamado “data” nos facilita la siguiente información de cada uno de ellos.

1 id Identificación del  objeto del contacto [string]
2 name Nombre completo del contacto [string]
3 first_name Nombre [string] admite nulos
4 last_name Apellidos [string] admite nulos
6 gender Genero del contacto (male or female) [string] admite nulos
7 is_friend Indica si es un amigo en Messenger [boolean]
8 is_favorite Indica si el contacto es un favorito en Messenger [boolean]
9 updated_time Fecha y hora de la ultima vez que se modifico el perfil del contacto en formato ISO 8601 [string]
10 user_id Id del contacto [string] admite nulos
11 email_hashes Array que contiene un hash SHA-256 por cada dirección de email del contacto. [array]
Cliente.GetCompleted +=new EventHandler<LiveOperationCompletedEventArgs>(Cliente_GetCompleted);

Cliente.GetAsync("me/contacts");

En el cuadro superior vemos la forma de solicitar los datos de los contactos mediante el método GetAsync. En la parte inferior vemos como podemos recoger los datos en formato Raw desde la propiedad RawResult en el evento GetCompleted, en vez usar el objeto de los contactos explicado anteriormente,

{

   "data": [

      {

         "id": "contact.b4466224b2ca42798c3d4ea90c75aa56", 

         "first_name": "Henrik", 

         "last_name": "Jensen", 

         "name": "Henrik Jensen", 

         "gender": null, 

         "is_friend": false, 

         "is_favorite": false, 

         "user_id": null, 

         "email_hashes": [

            "9ecdb19f4eb8e04304c5d1280368c42e85b6e4fe39f08b0c837ec592b905a620", 

            "fc05492f50da6488aa14dcf221d395bcb29a4e43b43b250d60c68df4f831cad3"

         ], 

         "birth_day": 29, 

         "birth_month": 3, 

         "updated_time": "2011-04-22T00:11:13+0000"

      }, {

         ...

      }

   ]

}

En el próximo post de la serie podremos ver como acceder a mas datos de la cuenta, mediante el uso de otros scopes y veremos un código de ejemplo de una solución paso por paso que detalle lo descrito hasta el momento.

[Libro] Windows Phone 7.5 "Mango" – Desarrollo Silverlight

Lo primero que tengo que decir es que el autor de este libro, Josué Yeray, le tengo considerado como un amigo, aunque no hayamos coincidido muchas veces en persona, nuestros mails y tweets intercambiados, hacen que tenga por Josué un respeto y admiración bastante elevados, así mismo su trabajo y lo que todo el mundo dice de el hacen el resto.

Digo esto de primeras, porque aunque intentare hacer una valoración y resumen independiente de su nuevo libro, quieras que no alguien puede pensar que lo que digo es por peloteo o amiguismo. No es necesario os lo aseguro, el libro es MUY BUENO, sin necesidad de añadirle ningún tipo de extra personal.

1-d9df9f5415Este libro comienza con un prologo magistral de Unai Zorrilla y tras el mismo nos presenta un par de capítulos introductorios sobre la plataforma. El primero de ellos denominado “Conociendo Windows Phone”, nos muestra tanto la arquitectura del sistema, como un repaso de las herramientas necesarias para programar este entorno. El segundo,  con el titulo “Introducción a Silverlight para Windows Phone” es un repaso de los elementos principales de Silverlight que se usaran en la programación para Windows Phone.

Como seguro que todos conocéis existen dos modelos de programación para Windows Phone, el modelo XNA, el cual esta indicado para desarrollo de juegos y entornos gráficos complejos y el modelo Silverlight. Como se puede deducir observando el titulo del libro, este, esta totalmente enfocado en el segundo tipo de desarrollo. Y buena muestra es el capitulo 3, titulado “Silverlight para Windows Phone a Fondo”. El cual nos muestra características de esta programación mas complejas e incluso nos enseña una pincelada de la programación bajo el patrón Model View ViewModel (MVVM).

“Windows Phone A Fondo” y “Windows Phone a Fondo II”, es la denominación del 4º y 5º capitulo. Estos son la esencia del libro, los capítulos mas extensos y en donde el autor nos enseña prácticamente todo lo fundamental para controlar este tipo de programación. Navegación entre paginas, Almacenamiento relacional con SQL Server CE, Tombstoning, Launchers and Choosers, acceso a GPS, Sensores, etc, etc. Y ojo temas como Background Process, acceso a contactos y demás que son específicos de la nueva versión 7.5 del sistema. Porque otra cosa mas, el libro esta totalmente revisado y adaptado a la nueva versión “Mango”, el único libro en el mundo, hasta la fecha que puede decir eso.

Los capítulos 6 y 7, titulados “Interacción con el usuario” e “Integrándonos con nuestro entorno”, respectivamente, nos adentran primero en la espectacular interfaz de usuario de la que dispone Windows Phone, explicándonos los controles pivot y panorama y por ejemplo los magníficos Tiles y segundo nos muestran la forma de interactuar con los diferentes procesos externos, como servicios remotos, tanto en WCF, como servicios OData, acceso a Sockets y demás.

Ibon Landa, recientemente nombrado MVP en Windows Azure, deja también su sello y participa como coautor del libro en el capitulo 8, (imagino que haya colaborado en mas partes). Este capitulo denominado “Windows Azure” nos explica a grandes rasgos que es y cuales son las partes fundamentales de Azure, para a continuación mostrarnos la relación entre Windows Phone y Windows Azure a través del Toolkit creado para tal efecto.

Finaliza el libro con un apéndice sobre la publicación de nuestras aplicaciones en el MarketPlace, como y de que manera debemos de proceder para ver nuestros desarrollos en la tienda online de aplicaciones para Windows Phone.

Sinceramente, el libro es una magnifica aproximación a la programación para Windows Phone. Trata la mayoría de puntos importantes que cualquier programador debería de conocer y dominar si quiere realizar buenos desarrollos en esta plataforma y los trata de forma fácil y muy bien explicada. Cuenta con nada mas y nada menos que 99 proyectos (uno mas y hubiera sido redondo) de ejemplo, con su código fuente descargable, que detallan al milímetro cada palabra que se cuenta en sus paginas.

A mi modo de ver es un libro de iniciación, básico para cualquier programador que se inicie en la plataforma, pero que ojo no debería tampoco faltar en la librería de un experto en esta tecnología, ya que seguro que alguna cosa se va a aprender con este libro, completo, bien escrito y mejor documentado. Es mas, según algunas fuentes será usado como material de referencia en cursos y masters impartidos por universidades.

Mi recomendación: Comprarle sin falta.

Por ultimo no me gustaría olvidarme de Krasis Press, que con sus libros en español de autores de gran calidad técnica, nos alegran la vida a los que como yo tenemos en la mesilla de noche en vez de “El quijote”, “Windows Phone 7.5, Desarrollo en Silverlight”. (entre otros).

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.