Extender las aplicaciones para "Windows 8" a la nube con SkyDrive

Continuando con el tema abierto hace poco en un artículo que publicamos que trataba del inicio de sesión en Windows 8 con el ID de Windows Live, ahora quisiéramos hablar un poco sobre el uso de SkyDrive desde las aplicaciones estilo Metro de Windows 8. Aunque las aplicaciones siempre consumen una cierta cantidad de “almacenamiento automático” dentro de SkyDrive para poder mantener las configuraciones entre distintas máquinas y teniendo presente que las propias aplicaciones también viajan con el usuario, nosotros sabemos que los desarrolladores están ansiosos por facilitar a los clientes nueva aplicaciones cuyos datos pueden, de una forma sencilla, seguir utilizándose entre máquinas distintas. SkyDrive es una manera ideal de conseguir esto ya que cada ID de Windows Live tiene asignado un espacio de disco gratuito en la nube. En este artículo comentamos cómo se pueden desarrollar aplicaciones estilo metro que utilicen el almacenamiento SkyDrive. Es nuestro primer artículo con código –seguramente habrá más en el futuro. Mike Torres, el jefe de grupo de desarrollo del equipo de SkyDrive Devices and Roaming, es el autor del artículo. –Steven.

A pesar de que lo habitual es que cada persona disponga de varios dispositivos, mucha gente sigue guardando sus archivos importantes en un solo PC o dispositivo de almacenamiento sin tener acceso a esos archivos desde otros dispositivos. Estos archivos se vinculan a un “lugar” –sea éste un PC de escritorio, un portátil, o un pendrive USB. Si no tenemos acceso a este lugar, no tenemos acceso a esos documentos o fotos. No solo es difícil el acceso a los archivos (o a veces es imposible), sino que compartirlos con otras personas en una red distinta puede convertirse en una labor realmente complicada.

Ahora, la nube hace posible (y fácil) a la gente acceder a estos contenidos desde casi cualquier sitio. Los archivos se mantienen en un almacén único y están accesibles para cualquier dispositivo capaz de conectarse a Internet desde cualquier lugar del mundo. Compartir fotos y colaborar en tiempo real con documentos ahora es también mucho más sencillo manteniendo una única copia del archivo en la nube. No obstante, el uso del almacenamiento en la nube aún no está tan extendido entre el público como medio para acceder a contenidos.

En la ponencia de apertura de la conferencia BUILD, Chris Jones nos contaba cómo todos los clientes de Windows 8 van a disponer de SkyDrive: una misma nube para todos, donde los archivos importantes de la gente estarán disponibles, accesibles en todo momento y se podrán compartir. Hubo también algunas sesiones durante la conferencia donde se explicaba cómo los desarrolladores pueden, con Windows 8, añadir a sus aplicaciones la potencia de la nube mediante Live Connect y el Live SDK. Cuando se usan juntos, las aplicaciones estilo Metro pueden utilizar la nube de Live para mantener logon único con el ID de Windows Live y acceder a sus datos personales, como documentos, fotos y vídeos en SkyDrive con el permiso del usuario.

Si tienes intención de desarrollar aplicaciones estilo Metro para Windows 8, en este artículo te enseño cómo se establece un logon único y cómo se accede a los datos del usuario en SkyDrive para conseguir que las aplicaciones estilo Metro sean más personales, obviamente con el consentimiento del usuario.

Conecta tus aplicaciones con la nube de Live

Como desarrollador, cuando empiezas a crear aplicaciones de nueva generación, lo que ves es que tienes que resolver dos tipos de problemas de manera insistente en cualquier plataforma:

  • Diseñar el proceso de registro y validación de usuario. A los usuarios no les gusta tener que registrarse en sus sitios web y sus aplicaciones, por lo que los desarrolladores saben que el nivel de participación y la fidelización a sus aplicaciones aumenta una vez que el usuario se ha registrado. El registro permite personalizar la experiencia del usuario y conviene que las aplicaciones recuerden los datos de los usuarios y los parámetros de personalización de cada uno de ellos.
  • Incorporar de manera fácil el contenido del usuario dentro de la propia aplicación para mejorar la calidad de su experiencia. Cosas que aparentemente son sencillas, como pedirle al usuario que inserte una foto para documentar su perfil, pueden en seguida convertirse en problemas complicados cuando vemos que los usuarios tienen sus fotos dispersas por toda clase de dispositivos y también en la nube.

En el caso de Windows 8, hemos resuelto ambos problemas para nuestras propias aplicaciones, como Fotos y Correo, y tus aplicaciones estilo Metro pueden utilizar esta misma plataforma y tecnología. Más concretamente, nosotros hemos resuelto estos problemas así:

  1. La identidad del usuario basada en la nube es ahora una primitiva de S.O. accesible de forma universal a aplicaciones y sitios web con permiso del usuario para validarse en modo de logon único. Esto supone que tus aplicaciones pueden heredar el estado de inicio de sesión de un usuario y su identidad, y no te tienes que preocupar de integrar un proceso de autenticación aparte. Esto es especialmente importante para resolver el punto 2.
  2. Hemos hecho que el contenido del usuario en la nube de Live quede a disposición de las aplicaciones utilizando protocolos estándar del sector, como OAuth para la autenticación y autorización, JSON como encapsulado para los datos devuelto cuando se accede a SkyDrive y Hotmail, y XMPP para la interoperabilidad con Windows Live Messenger. Además ofrecemos el Live SDK para la Preliminar de Desarrollo de Windows 8 con la que se puede desarrollar fácilmente enWinRT, con la integración dentro de Visual Studio 11 Express.

Después de que un usuario se conecta por vez primera a tu aplicación utilizando su ID de Windows Live, tendrá siempre una experiencia de inicio de sesión transparente desde cualquier PC con Windows 8 en el que haya iniciado sesión utilizando este ID de Windows Live. Lo mismo cuenta para tu sitio web, donde puede disfrutar de una experiencia de logon único si ha abierto sesión en él desde su PC con un ID de Windows Live o ha iniciado sesión en cualquier otro sitio web que soporte el ID de Windows Live, como Hotmail o SkyDrive.

La forma más sencilla de utilizar el logon único con el ID de Windows Live e integrar el contenido de SkyDrive dentro de las aplicaciones estilo Metro es mediante el uso del Live SDK.

Esto no quiere decir que tu aplicación tenga que utilizar obligatoriamente ninguno de estos servicios, su uso es totalmente opcional para el desarrollador. No hay obligación de que las aplicaciones para Windows 8 deban validar identidades con el ID de Windows Live o utilizar ningún tipo de almacenamiento concreto basado en la nube. Se trata simplemente de servicios que están a disposición de las aplicaciones de los desarrolladores que pueden utilizarlos si ellos quieren.

Uso del Live SDK en tus aplicaciones

Primero, si aún no lo has hecho, tienes que instalarte la versión Preliminar de Desarrollo de Windows 8 y la Preliminar de Desarrollo del Live SDK en tu PC. Este paquete instala también el Microsoft Visual Studio 11 Express para la Preliminar de Desarrollo de Windows. En segundo lugar, tendrás que entrar en el sitio de gestión de aplicaciones Windows Push Notifications y Live Connect para configurar el acceso desde tus aplicaciones estilo Metro a la nube de Live. Sigue los pasos indicados en ese sitio web para registrar tu aplicación para que pueda utilizar Live Connect.

Después de configurar tu aplicación para que utilice Live Connect, vas a necesitar añadirle una referencia al Live SDK. El Live SDK está disponible para entornos de desarrollo en C#, JavaScript y VB. Puedes añadirlo a tu proyecto pulsando con el botón derecho en Project y seleccionando Add Reference, seleccionas luego Extension SDKs y desde la lista, seleccionas la entrada para el Live SDK como se ve aquí:

En una aplicación JavaScript necesitarás añadir la referencia siguiente a un script externo en tu página Default.html:

<script src="ms-wwa:///LiveSDKHTML.5.0/js/wl.js" ></script>

En C# debes añadir la referencia siguiente para poder utilizar el Live SDK en tu código:

using Microsoft.Live;

Y en VB, solo necesitas añadirle la siguiente instrucción de importación:

Imports Microsoft.Live

Es un buen ejemplo de cómo vas a poder programar en el lenguaje que prefieras a la hora de crear tus aplicaciones estilo Metro para Windows 8.

Utilizar el ID de Windows Live en tus aplicaciones estilo Metro

Para poder aprovechar las ventajas del logon único (SSO) en tus aplicaciones, necesitas incorporar un botón de inicio de sesión en algún sitio de las mismas. Cuando el usuario pulse el botón de inicio de sesión, éste se producirá de manera automática si antes había iniciado sesión en el PC con su ID de Windows Live. En caso contrario, se le pedirán sus credenciales. Después, se pide al usuario que de su consentimiento expreso para que la aplicación acceda a sus datos como las fotos de SkyDrive. Este workflow se maneja de manera automática, simplemente añadiendo el botón de inicio de sesión. A destacar que los clientes aún tienen que confirmar el logon en tu aplicación y no abren sesión de forma automática -es un aspecto de diseño muy importante.

Este es un ejemplo de código HTML con el botón de inicio de sesión (como ves, es un simple DIV y lo tienes que configurar).

<div id="signinbutton" style='width: 251px; margin-left: auto; margin-top: 40%; height: 64px; top: 0px;'></div>

Después de añadir este botón a la página, ahora tenemos que acondicionarlo dentro de la página, puesto que el código de ejemplo lo único que hace es reservar un espacio para él. Tenemos además que configurar este botón de inicio de sesión con el ámbito que requiere tu aplicación. Un ámbito (“scope” ) define a qué cosas tendrá acceso la aplicación y para qué cosas va a tener que dar su permiso el usuario para que las aplicaciones puedan utilizarlas. Para acceder a datos en SkyDrive, la aplicación necesita tener estos dos ámbitos:

  • wl.signin – Este ámbito habilita la aplicación para el inicio de sesión automático.
  • wl.skydrive – Este ámbito otorga acceso en modo de lectura a los álbumes y fotos del usuario en SkyDrive (nota: la aplicación tendrá que utilizar wl.skydrive_update si tienes previsto que pueda subir contenidos a SkyDrive).

El siguiente es un ejemplo de código de inicialización en JavaScript, suponiendo que ya hemos creado el botón de inicio de sesión en la página con el id “signinbutton”:

function init() {
    WL.init();
    WL.ui({
        name: "signin",
        element: "signinbutton",
        scope: ["wl.signin", "wl.skydrive"],
    });
}

Y este ejemplo de código JavaScript es para controlar el inicio de sesión:

WL.Event.subscribe("auth.login", onLoginComplete);
function onLoginComplete() {
    var session = WL.getSession();
    if (!session.error) {
        signedInUser();
    }
}

Cuando el usuario pulsa en el botón de inicio de sesión, se le pide que acepte dar permiso a las aplicaciones para que accedan a sus datos. Como indicábamos antes, si el usuario ha iniciado sesión en el PC con su ID de Windows Live, entra en funcionamiento el logon único y el usuario no tiene que iniciar sesión otra vez. En lugar de ello, va directamente a la pantalla de consentimiento.

Acceso a contenidos de SkyDrive desde las aplicaciones

Una vez que el usuario ha dado su permiso para que la aplicación acceda a sus datos, el sistema devuelve tokens de acceso OAuth 2.0 a la aplicación y se puede utilizar para realizar llamadas al API RESTful contra la nube de Windows Live. Este es un ejemplo en JavaScript del código para acceder a una foto:

function downloadPicture(folderId) {
    var path = folderId + "/files"
    // Submit request
    WL.api({ path: path, method: "GET" }, onEnumerateFolderComplete)
};

Con una serie de llamadas como las descritas, una aplicación puede integrar contenidos de SkyDrive dentro de su experiencia de usuario: presentaciones de PowerPoint, vídeos, hojas Excel o imágenes, como vemos con esta pequeña aplicación de ejemplo.

Como ves, la integración de logon único y datos de usuario de SkyDrive en tus aplicaciones solo requiere añadir unas cuantas líneas de código con el Live SDK. Tus aplicaciones serán más personales y aprovecharán todas las posibilidades que ofrece el acceso a documentos y fotos en la nube. El código fuente completo para la aplicación de ejemplo mostrada en este artículo se puede descargar desde aquí.

Si necesitas más información sobre cómo se utiliza el Live SDK para disponer de logon único en tus aplicaciones y utilizar las APIs de SkyDrive, puedes ver la sesión de Dare Obasanjo llamada, Power your app with Live services y la de Steve Gordon titulada The complete developer’s guide to the SkyDrive API expuestas en la conferencia BUILD. Puedes también leer más en la web https://dev.live.com y descargando la Preliminar de Desarrollo de Live SDK. ¡Que lo disfrutes!

Mike Torres

FUENTE: Steven Sinofsky - https://blogs.msdn.com/b/b8/archive/2011/09/28/extending-quot-windows-8-quot-apps-to-the-cloud-with-skydrive.aspx

 

Saludos,

El equipo de MSDN España