如何在 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 特性原文請看這裡

推薦文章