如何在 Windows Phone 8 應用中使用 OneDrive 特性

類別: IT

介紹

Microsoft 提供了一個 Windows Live Connect SDK ,允許你輕鬆連線 OneDrive(之前叫作 Skydrive) ,並從其下載檔案或上傳檔案到其上。

背景

在開始之前,我們必須下載用於 Windows, Windows Phone 8, 和 .NET 的最新版 Live SDK: http://msdn.microsoft.com/en-us/live/ff621310.aspx

開始建立你自己的 Windows Phone 8 App

下載目前最新版 5.5 之後,我們將建立一個新的 Windows Phone 8 應用,名為SkyDrive Example”,在裡面,使用者可以用其 Microsoft Live 帳號註冊,並向 Skydrive 傳送檔案。

在Solution Explorer視窗中滑鼠左鍵點選你專案下面的References,新增這些必要的引用到你的專案中:

修改我們應用的標題使其更顯著,新增 SignInButton 到 Toolbox 使認證可被處理。

你會發現許多元件,所以可在過濾區寫上 SignInButton 來找到它,功能如下所示:

幹得好!現在,我們要建立一個客戶ID用來儲存使用者的授權資訊,免得每次開啟應用都要簽入。

訪問 https://account.live.com/developers/applications/create ,輸入我們的應用名稱,接受使用條款。

做完之後,你會發現自己的客戶端ID,如下圖所示:

現在,你需要把這些程式碼加入 MainPage.xaml 檔案中,以加入 signInButton,不要忘記把你的 client ID 加入到 Client Id 區中:

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">            <TextBlock Text="SkyDrive Example"             Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>            <TextBlock Text="Upload a File" Margin="9,-7,0,0"             Style="{StaticResource PhoneTextTitle1Style}"/>        </StackPanel>                <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <Controls:SignInButton Name="loginButton"             Content="SignInButton" HorizontalAlignment="Left"             Margin="110,75,0,0" VerticalAlignment="Top"             Scopes="wl.signin wl.offline_access wl.skydrive_update"             SessionChanged="loginButton_SessionChanged" Visibility="Visible"/>            <Button Content="Upload" HorizontalAlignment="Left"             Margin="110,256,0,0" VerticalAlignment="Top"             Width="211" Click="Upload_Click"/>        </Grid>

現在,該處理 MainPage.cs 了。我們不想每次啟動應用時註冊,所以我們把下面的程式碼加入進去,開始是引用一些必要的庫:

using Microsoft.Live;using Microsoft.Live.Controls;

別忘記宣告 LiveConnectClient.

private LiveConnectClient client;

為 loginButton_SessionChanged 助手方法新增如下程式碼:

private void loginButton_SessionChanged(object sender, LiveConnectSessionChangedEventArgs e)        {                   if (e != null && e.Status == LiveConnectSessionStatus.Connected)        {        //the session status is connected so we need to set this session status to client        this.client = new LiveConnectClient(e.Session);                }        else        {            this.client = null;        }        }

如果點選了 download,他會傳送一個內容是‘hello world’、名為‘sample.txt’的檔案到他的 Onedrive 帳號上。

private async void Upload_Click(object sender, RoutedEventArgs e)        {            if (client != null)            {                try                {                    string fileName = "sample.txt";                    IsolatedStorageFile myIsolatedStorage =                     IsolatedStorageFile.GetUserStoreForApplication();//deletes the file if it already exists                    if (myIsolatedStorage.FileExists(fileName))                    {                        myIsolatedStorage.DeleteFile(fileName);                    }//now we use a StreamWriter to write inputBox.Text to the file and save it to IsolatedStorage                    using (StreamWriter writeFile = new StreamWriter                    (new IsolatedStorageFileStream(fileName, FileMode.Create, FileAccess.Write, myIsolatedStorage)))                    {                        writeFile.WriteLine("Hello world");                        writeFile.Close();                    }                    IsolatedStorageFileStream isfs = myIsolatedStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read);                    var res = await client.UploadAsync("me/skydrive", fileName, isfs, OverwriteOption.Overwrite);                }                catch (Exception ex)                {                    MessageBox.Show("Error: " + ex.Message);                }            }            else            {                MessageBox.Show("Please sign in with your Microsoft Account.");            }        }

結論

幹得好!我們一起看到了如何在你的Windows Phone 8應用程式中實現OneDrive API和如何傳送一個簡單的檔案到OneDrive上。

如何在 Windows Phone 8 應用中使用 OneDrive 特性原文請看這裡

推薦文章