Live Connect SDK para Windows Phone 8

Estándar

Live SDK te lo hace  fácil como desarrollador a utilizar los servicios Live  dentro de tu aplicación de Windows Phone 8. Más de 500 millones de personas utilizan servicios como Hotmail, SkyDrive, Messenger etc. Cuando usas Live SDK, sincroniza muy bien en la nube y está disponible en todos los dispositivos. Voy a intentar cubrir algunas cosas básicas de Windows Phone 8 Live Connect en 3 días. Este es el día 1.

Día 1 – Autenticación –obtener información básica sobre el usuario

Día 2 – SkyDrive – trabajando con archivos (fotos, documentos etc..)

Día 3 – Hotmail – trabajo con contactos y calendario (eventos)

DIA 1-  autenticación, información básica de usuario

A continuación, necesitará descargar e instalar Live SDK:

http://www.microsoft.com/en-us/download/details.aspx?id=35754

Luego de haber instalado el Live SDK creamos un nuevo proyecto de Windows Phone 8 en Visual Studio 2012 y dentro de las referencias agregamos Microsoft.Live y Microsoft.Live.Controls

Referencias

El Microsoft.Live es la referencia principal. Tambien se puede excluir la Microsoft.Live.Controls la cual le da un llamado Sign-In control button, que puede o no puede utilizar dentro de su aplicación.
Es necesario un paso más para poder empezar a utilizar el SDK en su aplicación. Usted tiene que registrar su aplicación y obtener el ID de cliente que se necesita para hacer su aplicación reconocida por los servicios Live. Link:
CreateApp
Añadir el nombre de la aplicación y seleccione idioma y aceptar las condiciones de uso y obtendrá el ID de cliente:
Sin título
Tiene que  mantener en secreto su ID de cliente y el cliente secreto.  En este caso nosotros solo necesitamos ID de cliente.
Ya teniendo todo esto ahora nos vamos al Visual Studio y  agregamos el siguiente código XAML en MainPage.xaml reemplazando el ContentPanel que se encuentra en MainPage.xaml

<Grid x:Name=”ContentPanel” Grid.Row=”1″ Margin=”12,0,12,0″>
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”
VerticalAlignment=”Top” Margin=”0,127,0,0″ Height=”211″ Width=”456″>
<Image Name=”ImagenPerfil”
Width=”131″ Height=”161″
VerticalAlignment=”Center”
Margin=”12,27,12,23″/>
<TextBlock Name=”InfoInicio” FontSize=”22″ VerticalAlignment=”Center” TextWrapping=”Wrap” Margin=”12,27,12,37″ Height=”147″ Width=”282″/>
</StackPanel>
</Grid>
<ProgressBar x:Name=”cargando” IsIndeterminate=”True” Height=”19″ Margin=”0,26,0,0″ Grid.Row=”1″ VerticalAlignment=”Top”/>

El controlde Image tendrá la imagen del usuario, y textblock tendra un mensaje sobre el usuario que ha iniciado sesión o sobre los errores ocurridos.
En el MainPage.xaml.cs, agregue el siguiente código:

LiveAuthClient auth;

public MainPage()
{
InitializeComponent();
this.Loaded += MainPage_Loaded;

}

LiveAuthClient es el objeto que se va a utilizar para la autenticación de servicios Live, y vamos a hacer todo en el controlador de eventos MainPage_Loaded:

async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
try
{
cargando.Visibility = Visibility.Visible;
auth = new LiveAuthClient(“AQUI VA EL ID DE CLIENTE”);
LiveLoginResult result = await auth.InitializeAsync(new string[] { “wl.basic”, “wl.offline_access”, “wl.signin” });
if (result.Status != LiveConnectSessionStatus.Connected)
result = await auth.LoginAsync(new string[] { “wl.basic”, “wl.offline_access”, “wl.signin” });

if (result.Status == LiveConnectSessionStatus.Connected)
{
this.InfoInicio.Text = “Signed in”;
}
}
catch (LiveAuthException exc)
{
this.InfoInicio.Text = “Error: ” + exc.Message;
}
finally
{
cargando.Visibility = Visibility.Collapsed;
}
}

“cargando”  es un simple ProgressBar que  se oculta y se mostra cuando sea necesario. Creamos el objeto LiveAuthClient utilizando el ID de cliente como parámetro del constructor. LiveLoginResult esel  resultado que llego después de intentar iniciar sesión. Hay dos maneras de Autorizar – si ya tenemos una sesión válida desde antes de InitializeAsync  debe establecer la conexión y Autorizar nosotros en silencio. Si no, no se conectará el estado de resultado pero desconectado o desconocido, después de lo cual llamamos al método de LoginAsync.

WL.Basic – acceso de lectura a la información de perfil básico del usuario

WL.offline_access – La capacidad de una aplicación para leer y actualizar su información de un usuario en cualquier momento. Sin este ámbito, una aplicación puede acceder a información del usuario únicamente mientras el usuario está registrado en Live Connect y está utilizando su aplicación.

WL.signin – Comportamiento Inicio de sesión único. Con single sign-in, los usuarios que ya están Autorizados,también están Autorizados a su sitio Web.

Estos tres ámbitos se llaman ámbitos fundamentales, y hay otros ámbitos extendidos.Mas Info sobre estos puntos aqui: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx

Si la autenticación falla y hay una excepción, la excepción es LiveAuthException. Vamos a ver qué pasa cuando ejecuto este Demo:

Sin título

Como mi emulador no está conectado a mi Microsoft Account, primero debo autorizar en el uso de credenciales. Después de hacerlo, me aparece la siguiente pantalla:

33333

 me pide dar permisos a esta aplicación para hacer algunas cosas que se definen el ámbito de aplicación.Después de hacer clic en sí, estoy suscrito:
captura
Si la salida de la aplicación y volver más tarde, ya simplemente haz autorizado para que inicie automáticamente y no tienes que repetir los pasos de arriba.
Después de que el usuario autoriza, puedo hacer algunas cosas bastante interesantes, información de perfil del usuario. Vamos a ver cómo hacerlo:

try
{
cargando.Visibility = Visibility.Visible;
auth = new LiveAuthClient(“AQUI VA TU CLIENTE ID”);
LiveLoginResult result = await auth.InitializeAsync(new string[] { “wl.basic”, “wl.offline_access”, “wl.signin” });
if (result.Status != LiveConnectSessionStatus.Connected)
result = await auth.LoginAsync(new string[] { “wl.basic”, “wl.offline_access”, “wl.signin” });

if (result.Status == LiveConnectSessionStatus.Connected)
{
var connect = new LiveConnectClient(auth.Session);
var opResult = await connect.GetAsync(“me”);
dynamic nameResult = opResult.Result;
this.InfoInicio.Text = “Hola ” + nameResult.name + “, Has iniciado sesion”;

var photoResult = await connect.GetAsync(“me/picture”);
dynamic photoResultdyn = photoResult.Result;
var image = new BitmapImage(new Uri(photoResultdyn.location, UriKind.Absolute));
this.ImagenPerfil.Source = image;
}
}
catch (LiveAuthException exc)
{
this.InfoInicio.Text = “Error: ” + exc.Message;
}
catch (LiveConnectException connExc)
{
this.InfoInicio.Text = “Error making request: ” + connExc.Message;
}
finally
{
cargando.Visibility = Visibility.Collapsed;
}

Y si ejecutamos esto ya tenemos como resultado nuestra imagen al iniciar sesion

iniciado sesion

Tambien les dejo un link bastante interesante para las personas que quieran hacer un boton de inicio de sesion:

http://msdn.microsoft.com/en-us/library/live/hh243641.aspx

en el proximo articulo vamos a tocar este tema de como crear un boton inicio de sesion con la referencia Microsoft.Live.Controls

Les dejo el codigo fuente para que lo revisen. DESCARGAR

Saludos nos vemos en la proxima🙂

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s