December 12, 2011 1:55 pm

APIs SkyDrive para documentos y fotos — listos para llevar las aplicaciones a la nube con Windows 8, Windows Phone y otros

En vista de los anuncios publicados en la Windows Store, queríamos compartir el trabajo que estamos realizando para ayudar a aquellos que desarrollan en Windows, Windows Phone y otras plataformas a utilizar SkyDrive en sus aplicaciones. Hace unos cuantos meses, como parte del prelanzamiento de Windows Live para Windows 8, anunciamos la disponibilidad de la versión preliminar para desarrolladores, la próxima versión de las APIs Live Connect y el recién creado Live SDK. Uno de los cambios más importantes a la API consistió en considerar la retroalimentación que hemos recibido de los desarrolladores respecto al acceso a SkyDrive. El cambio principal en SkyDrive fue proporcionar a las aplicaciones la capacidad de acceder, subir y compartir documentos, fotos y videos desde el almacenamiento en la nube del usuario en SkyDrive.

Gracias a su integración en Windows Phone y Windows 8, SkyDrive ahora se convierte en una parte primordial de tu “nube de dispositivos”, pues te permite trabajar y jugar fácilmente en tu PC y tu teléfono. SkyDrive también funciona con aplicaciones como Microsoft Office y OneNote, a fin de que puedas organizar, colaborar y compartir desde cualquier lugar. Consideramos que nuestros clientes obtienen mayor valor entre más gente y más aplicaciones se puedan conectar a la nube desde los dispositivos más populares. Esto abarca mucho más que las aplicaciones y plataformas de dispositivos desarrolladas por Microsoft. Con esta modificación al API, cualquier aplicación en cualquier plataforma ahora puede aprovechar la ventaja de que los usuarios con un Windows Live ID, incluidos todos los usuarios de Windows 8, obtienen almacenamiento gratuito en la nube con SkyDrive, el cual pueden integrar en su experiencia para acceder a sus documentos y fotos.

Nos complace anunciar que las nuevas versiones de las APIs Live Connect y del Live SDK para Windows Phone ya se entregaron. Por favor, continúa leyendo para conocer lo que hay de nuevo, o visita el centro de desarrollo Live Connect para más información.

Cambios a las APIs REST para acceder a SkyDrive

El API REST de Live Connect proporciona un modelo jerárquico intuitivo del contenido que un usuario tiene enlazado a su Windows Live ID. Dicha jerarquía se muestra abajo:

image

Los cuadros en azul son los nuevos elementos del modelo de datos que se agregaron a esta nueva versión. El primer cambio a SkyDrive es que ahora se ofrece una manera de acceder a todo el SkyDrive de un usuario a través de una llamada por el API REST.

Aquí se muestra un ejemplo de una solicitud de HTTP para recuperar una lista de todas las carpetas de un usuario en SkyDrive:

GET https://apis.live.net/V5.0/me/skydrive/files?access_token=ACCESS_TOKEN HTTP/1.1

User-Agent: Fiddler

Host: apis.live.net

La solicitud anterior arroja el siguiente resultado JSON para mi cuenta de SkyDrive:

{

“data”: [ // 1 item

{

“id”: “folder.616444ee7a34f417.616444EE7A34F417!12045”,

“from”:

{

“name”: “Dare Obasanjo”,

“id”: “616444ee7a34f417”

},

“name”: “Wave 4 Feedback”,

“description”: null,

“parent_id”: “folder.616444ee7a34f417”,

“upload_location”: “https://apis.live.net/v5.0/folder.616444ee7a34f417.616444EE7A34F417!12045/files/”,

“count”: 14,

“link”: “https://skydrive-df.live.com/redir.aspx?cid=616444ee7a34f417&page=view&resid=616444EE7A34F417!12045&parid=616444EE7A34F417!1967”,

“type”: “album”,

“shared_with”:

{

“access”: “Everyone (public)”

},

“created_time”: “2010-07-14T13:28:48+0000”,

“updated_time”: “2011-07-18T03:40:07+0000”

}

]

}

El proceso de subir archivos es igual de sencillo. Las aplicaciones pueden utilizar solicitudes HTTP PUT o POST para subir documentos, fotos o videos a SkyDrive en la ubicación de la carpeta de archivos cargados. Cabe señalar que no todos los formatos de archivos se soportan para subirlos a SkyDrive. En esta versión, nos hemos enfocado en soportar los tipos de contenido de los cuales nuestros usuarios pueden obtener una vista previa fácilmente en SkyDrive.com.

Abajo se muestra un ejemplo de cómo subir un archivo de texto utilizando HTTP PUT:

PUT https://apis.live.net/v5.0/me/skydrive/files/HelloWorld.txt?access_token=ACCESS_TOKEN

Hello, World!

Y así se ve cuando se utiliza HTTP POST:

POST https://apis.live.net/v5.0/me/skydrive/files?access_token=ACCESS_TOKEN

Content-Type: multipart/form-data; boundary=A300x

–A300x

Content-Disposition: form-data; name=”file”; filename=”HelloWorld.txt”

Content-Type: application/octet-stream

Hello, World!

–A300x

Estos son sólo unos cuantos ejemplos de lo fácil que resulta interactuar con SkyDrive por medio de un HTTP normal. Otras operaciones como editar, copiar o compartir archivos también son muy sencillas. Para conocer una manera fácil de probar el API REST de Live Connect, visita nuestro SDK interactivo.

Trabajando con SkyDrive a través del Live SDK para Windows Phone

El objetivo del Live SDK consiste en simplificar las tareas comunes que todas las aplicaciones tienen que realizar utilizando el Live SDK. Dichas tareas incluyen crear un botón de registro, solicitar y obtener consentimiento del usuario para acceder a sus datos por medio de OAuth 2.0, y trabajar con el API REST de Live Connect.

Desde que entregamos la versión preliminar para desarrolladores del Live SDK para Windows Phone, hemos visto mucho interés por él en nuestros foros de desarrolladores, lo cual nos ha entusiasmado a todos.

Para ayudar a los desarrolladores a comenzar a utilizar el Live SDK para Windows Phone, creamos una muestra del código, llamada Photo Sky on the Go, que nos enseña a navegar por los álbumes de fotos en SkyDrive y subir fotos desde el hub de Fotos o la cámara. Esta muestra incorpora varios elementos que simplifican esta tarea, tales como el control de registro estándar que se puede colocar en el XAML para tu aplicación de Windows Phone y que maneja el proceso de registro y de consentimiento. El siguiente XAML especifica que se creará un botón de registro que brinda la capacidad de registrar al usuario para obtener acceso a su perfil y a sus fotos, así como para subir contenido a SkyDrive:

<live:SignInButton ClientId=”YOUR CLIENT ID GOES HERE” Scopes=”wl.basic wl.photos wl.skydrive wl.offline_access

wl.signin wl.skydrive_update” RedirectUri=”http://oauth.live.com/desktop” Branding=”Skydrive” TextType=”SignIn”

Grid.Row=”1″ Margin=”114,8,145,8″ d:LayoutOverrides=”VerticalAlignment” SessionChanged=”SignInButton_SessionChanged”/>

Al crear el botón, éste aparece como se muestra en la siguiente imagen:

image

Al pulsarlo, el botón lleva al usuario a lo largo del flujo de permisos basado en OAuth 2.0, donde se le brinda la opción de aceptar o rechazar la petición de otorgar a la aplicación acceso a su SkyDrive.

image

Una vez que se realiza esa acción, la aplicación puede descargar y subir contenido a SkyDrive por medio de LiveConnectClient. El extracto de código que aparece abajo muestra el proceso de navegar por los álbumes de fotos en SkyDrive utilizando el Live SDK en el Photo Sky de la aplicación Go.

private void GetAlbumData()

{

LiveConnectClient clientFolder = new LiveConnectClient(App.Session);

clientFolder.GetCompleted += new EventHandler<LiveOperationCompletedEventArgs>(clientFolder_GetCompleted);

clientFolder.GetAsync(“/me/albums”);

}

void clientFolder_GetCompleted(object sender, LiveOperationCompletedEventArgs e)

{

if (e.Error == null)

{

List<object> data = (List<object>)e.Result[“data”];

foreach (IDictionary<string,object> album in data)

{

SkydriveAlbum albumItem = new SkydriveAlbum();

albumItem.Title = (string)album[“name”];

albumItem.Description = (string)album[“description”];

albumItem.ID = (string)album[“id”];

Albums.Add(albumItem);

GetAlbumPicture(albumItem);

DownloadPictures(albumItem);

}

}

}

Aquí se muestra la imagen de la experiencia de usuario que genera el código arriba descrito:

image

El código para subir fotos desde el teléfono es igual de sencillo:

internal void Upload()

{

PhotoChooserTask task = new PhotoChooserTask();

task.ShowCamera = true;

task.Completed += new EventHandler<PhotoResult>(task_Completed);

task.Show();

}

void task_Completed(object sender, PhotoResult e)

{

if (e.ChosenPhoto == null)

return;

LiveConnectClient uploadClient = new LiveConnectClient(App.Session);

uploadClient.UploadCompleted += new EventHandler<LiveOperationCompletedEventArgs>(uploadClient_UploadCompleted);

uploadClient.UploadAsync(SelectedAlbum.ID, “Image”+DateTime.Now.Millisecond+”.jpg”, e.ChosenPhoto);

}

void uploadClient_UploadCompleted(object sender, LiveOperationCompletedEventArgs e)

{

if (e.Error == null)

{

Deployment.Current.Dispatcher.BeginInvoke(() => DownloadPictures(SelectedAlbum));

}

}

El código anterior utiliza el PhotoChooserTask para seleccionar una foto del hub de Fotos o de la cámara, la cual luego se sube a SkyDrive por medio de LiveConnectClient.

image

Eso es todo lo que se necesita hacer.

Para los desarrolladores de Windows, existe también un Live SDK para la versión previa de Windows que Mike Torres ya abordó en su entrada de blog Extending “Windows 8” apps to the cloud with SkyDrive (Llevando las aplicaciones para “Windows 8” a la nube con SkyDrive). Ese SDK se irá actualizando a la par de las actualizaciones futuras de Windows y estará disponible cuando finalmente se lance la próxima versión de Windows.

Muéstranos tus aplicaciones

Nos sentimos muy entusiasmados por el interés que hemos visto en SkyDrive tanto de los usuarios como de los desarrolladores, quienes nos han manifestado lo que desean de nuestra plataforma. Ahora que ya están disponibles las APIs, nos encantaría conocer las maneras innovadoras en que la gente incorporará SkyDrive en sus aplicaciones móviles, sus dispositivos y sus sitios web.

Muchas gracias por toda su retroalimentación; siempre la apreciamos y siempre la escuchamos.

Dare Obasanjo

Director de Programa para la Plataforma Connect Platform