Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Como enviar conteúdo para o SkyDrive a partir de uma aplicação Windows Phone

From Wiki
Jump to: navigation, search

Este artigo explica como enviar ficheiros para o SkyDrive a partir de uma aplicação Windows Phone, usando o Live Connect

WP Metro Icon File.png
WP Metro Icon Web.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata

Exemplo de código
Código fonte: Noise Reduction (utiliza este código)

Testado com
Aparelho(s): Nokia Lumia 800, Nokia Lumia 820

Compatibilidade
Plataforma(s): Windows Phone
Windows Phone 8
Windows Phone 7.5

Artigo
Palavras-chave: SkyDrive
Tradução:
Por PedroQ
Última alteração feita por kiran10182 em 09 Oct 2013

Contents

Introdução

O SkyDrive é um serviço cloud da Microsoft que permite aceder a ficheiros e documentos em todos os teus telemóveis e computadores bem como partilhá-os com os teus amigos e colegas. Este serviço está disponível como uma extensão do explorador de ficheiros nativo em várias plataformas (e.g. Windows, Mac, iOS, Android) e pode também ser acedido usando a maioria dos web browsers. É também possível aceder ao serviço directamente nas tuas aplicações, usando um conjunto de controlos e APIs do SDK Live Connect (que permite aos programadores integrar as suas aplicações com o SkyDrive, Hotmail, e Messenger).

Skydrive-logo-200.png

Este artigo explica como obter o SDK LiveConnect, adicionar as APIs ao teu projecto, iniciar sessão no servico, e enviar um ficheiro. O código é compatível com Windows Phone 8. Para utilizar em Windows Phone 7, são necessários alguns passos adicionais descritos aqui.

Pré-requisitos

Até o momento em que escrevo este artigo, as APIs LiveConnect não são incluídas no SDK do Windows Phone.

Antes de começar:

Criar a aplicação

Crie uma nova aplicação Windows Phone usando o template localizado em Visual C# -> Windows Phone -> Windows Phone App e dê-lhe o nome de SkyDrive:

SkyDriveEN-step-000.png


Escolhe a última versão do OS

SkyDriveEN-step-001.png


Abra a janela Add Reference e navega até Assemblies -> Extensions. Adiciona os assemblies Microsoft.Live e Microsoft.Live.Controls ao teu projecto.

SkyDriveEN-step-002.png


Abra a MainPage.xaml na vista de design. Abre a Toolbox, clica com o botão direito do rato e selecciona Choose Items…. No separador Windows Phone Components, encontra o controlo SignInButton situado no namespace Microsoft.Live.Control e adiciona-o à Toolbox (apenas é necessário executar este passo uma vez).

SkyDriveEN-step-003.png


Se tudo estiver bem instalado o controlo SignInButton deve aparecer na Toolbox. Arrasta-o até à vista de design.

SkyDrive-step-004.png

Scopes e permissões

Antes de fazer pedidos de informações às APIs Live Connect, é necessário, na maioria dos casos, obter permissão do utilizador para aceder a essas informações ou para criar novos objectos em nome do utilizador. Nas APIs Live Connect, esta permissão tem o nome de scope. Casa scope concede um nível diferente de acesso.

Existem dois tipos de scopes:

  • Core: são a base das APIs Live Connect e estão relacionados com as informações sobre o utilizador e o seu contacto.
  • Extended: permitem aceder a um conjunto mais amplo de informações sobre o utilizador e o seu contacto.


Para o nosso projecto exemplo necessitamos dos seguintes scopes:

Core

Scope Permissões
wl.basic Ler a informação básica do perfil de um utilizador. Também concede accesso de leitura à lista de contactos do utilizador.
wl.offline_access Leitura e actualização das informações do utilizador a qualquer instante. Sem esta permissão, uma aplicação pode apenas aceder a estas informações quando o utilizador tem sessão iniciada no Live Connect e está a usar a aplicação.
wl.signin Procedimento Single sign-in. Com o single sign-in, os utilizadores com sessão iniciada no Live Connect têm também a sessão iniciada no teu website.

Extended

Scope Permissões
wl.skydrive_update Acesso de leitura e escrita aos ficheiros do utilizador armazenados no SkyDrive.

O código no ficheiro Into.xaml deve ter o seguinte aspecto:

<my:SignInButton Content="Button" Name="skydrive" Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update" SessionChanged="skydrive_SessionChanged"  />

ClientId

É agora necessário ligar a nossa aplicação ao Live Connect. Abre o Live Connect Developer Center e clica em Create Application. Cria uma aplicação e dá-lhe um nome.

SkyDrive-step-005.png

Se tudo correr como esperado são fornecidos um Client ID e um Client secret.

SkyDrive-step-006.png

Agora adicionamos o ClientID ao código do SignInButton:

<my:SignInButton Content="Button" Name="skydrive" ClientId="00000000440xxxxx" Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update" Branding="Skydrive" TextType="SignIn" SessionChanged="skydrive_SessionChanged"  />

Utilizar as APIs do SkyDrive

using Microsoft.Live;
using Microsoft.Live.Controls;
 
// SkyDrive session
private LiveConnectClient client;

Gerir a sessão SkyDrive

private void skydrive_SessionChanged(object sender, LiveConnectSessionChangedEventArgs e)
{
 
if (e != null && e.Status == LiveConnectSessionStatus.Connected)
{
this.client = new LiveConnectClient(e.Session);
this.GetAccountInformations();
}
else
{
this.client = null;
InfoText.Text = e.Error != null ? e.Error.ToString() : string.Empty;
}
 
}
 
private async void GetAccountInformations()
{
try
{
LiveOperationResult operationResult = await this.client.GetAsync("me");
var jsonResult = operationResult.Result as dynamic;
string firstName = jsonResult.first_name ?? string.Empty;
string lastName = jsonResult.last_name ?? string.Empty;
InfoText.Text = "Welcome " + firstName + " " + lastName;
}
catch (Exception e)
{
InfoText.Text = e.ToString();
}
}

Screenshot do processo de autenticação

Login screenshot

Enviar um ficheiro

Em primeiro lugar criamos um ficheiro de demonstração para enviar. Neste exemplo é criado um ficheiro binário:

private string fileName = "sample.dat";
private IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
 
private void CreateFileIntoIsolatedStorage()
{
if (isf.FileExists(fileName))
{
isf.DeleteFile(fileName);
}
 
IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(fileName, FileMode.Create, IsolatedStorageFile.GetUserStoreForApplication());
 
byte[] output = new byte[25];
 
for (int i = 0; i < 25; i++)
{
output[i] = (byte)(i);
}
 
isfStream.Write(output, 0, output.Length);
 
isfStream.Close();
}

Neste exemplo chamamos este método a partir do construtor, no entanto é possível criar este ficheiro quando e onde necessário.

public MainPage()
{
InitializeComponent();
CreateFileIntoIsolatedStorage();
}

Agora podemos enviar o ficheiro

private async void btnUpload_Click(object sender, RoutedEventArgs e)
{
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var fileStream = store.OpenFile(strSaveName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
try
{
LiveOperationResult res = await client.BackgroundUploadAsync("me/skydrive",
new Uri("/shared/transfers/"+fileName, UriKind.Relative),
OverwriteOption.Overwrite
);
InfoText.Text = "File "+fileName+" uploaded";
} catch (Exception ex) {
 
}
}
}
}

BackgroundUploadAsync

Parâmetros

  • path
Type: String

O ID da pasta no SkyDrive para onde o ficheiro será enviado, por exemplo "folder.8c8ce076ca27823f.8C8CE076CA27823F!142"

  • uploadLocation
Type: Uri

A localização onde se encontra o ficheiro que será enviado, por exemplo "/shared/transfers/myFile2.txt"

  • option
Type: OverwriteOption

Especifica se o ficheiro que será enviado deve substituir um ficheiro já existente com o mesmo nome nessa localização.

Código exemplo

Ligações

This page was last modified on 9 October 2013, at 19:07.
188 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×