文章目錄
- 什麼是Windows Live SDK?
- 動手實踐——SkyDrive的雲端相簿
Windows Phone 雲應用開發實踐(二)
Windows Live SDK什麼是Windows Live SDK?
Windows Live ID SDK包含Windows Live API,使您的應用程式通過MSN串連通行網路,輕鬆體驗微軟雲端服務,諸如Hotmail、SkyDrive和Windows Live Messenger。
基於Windows Live SDK的"MSN串連"的價值對於開發人員而言,能解決登入難題,提高使用者活躍度;利用SkyDrive介面,零成本打造雲端服務;還可以是您的應用程式佔據日曆入口;匯入使用者好友關係,傳播心情。微軟則通過Windows Live ID打造雲體驗平台,保證使用者跨平台享受同一使用體驗,讓Metro應用功能更豐富,讓Metro與我們的生活更加緊密。
圖 MSN串連
MSN串連支援的平台:Metro應用 (Window 8)、Web、Windows Phone。那麼基於Windows Live SDK的"MSN串連"在Windows Phone平台能做什麼呢?
- 使用MSN登陸
通過調用SDK的SignInButton,第三方Windows Phone用戶端可以輕鬆實現MSN帳號登入功能。
圖 MSN登陸
在使用者登入後,應用可以輕鬆擷取使用者的基本資料,包括姓名、頭像、使用者MSN好友資訊、Email、生日、工作、性別、地址和電話等資訊。應用還發行就緒使用者動態資訊,該動態會在Windows Phone的人脈(People Hub)以及MSN簽名檔上顯示。
圖 使用者動態資訊發布至人脈
- 調用Hotmail介面
通過調用Hotmail介面,Windows Phone應用可以訪問使用者的日曆,實現讀/寫/更新/刪除日曆事件,訂閱公用日曆事件。
圖 天氣通應用將天氣資訊顯示在手機屏保日曆上
- 調用SkyDrive介面
通過調用SkyDrive介面,Windows Phone應用可以讀取使用者儲存在SkyDrive上的檔案,使用者可以在應用內直接處理他的檔案(如給一張照片做後期效果);通過調用SkyDrive介面,Windows Phone應用還可實現資料、檔案儲存在使用者的SkyDrive上,從而實現跨系統,跨平台得共用資料;通過調用SkyDrive介面,Windows Phone應用可以實現與使用者的好友共用檔案,或者是協同處理檔案,眾所周知,SkyDrive非常便於檔案的共用和協作。
動手實踐——SkyDrive的雲端相簿
本節的主要內容是使用Windows Live SDK調用SkyDrive介面。在WebBrowser控制項中登陸Windows Live,為應用程式獲得授權後,調用SkyDrive API訪問使用者儲存在雲端的圖片。
- 準備工作
配置開發環境
安裝Live Software Development Kit (SDK);
註冊應用
在開發之前請先到https://manage.dev.live.com註冊您的應用。在這個網站中,首先使用Windows Live帳號登陸,登陸結束後,點擊"Create Application",進入建立應用程式的頁面後輸入程式的名稱和預設語言,然後點擊"I accept",就會建立一個client ID和client secret識別應用程式以及使用Live Connect來擷取使用者資料。
特別說明:
如果你的redirect domain是主網域名稱,你仍然可以在程式裡使用子網域名稱來做redirect domain。(比如你可以用http://luckyboy.com作為redirect domain來註冊,但是程式裡你的回調頁面可以是iam.luckyboy.com)
- OAuth2.0基本原理
OAuth2.0的基本原理是:允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存放在特定服務提供者的資料。每一個令牌授權一個特定的網站(例如,視頻編輯網站)在特定的時段(例如,接下來的2小時內)內訪問特定的資源(例如僅僅是某一相簿中的視頻)。這樣,OAuth2.0允許使用者授權第三方網站訪問他們儲存在另外的服務提供者上的資訊,而不需要分享他們的訪問許可或他們資料的所有內容。如需要瞭解更多內容,請瀏覽官方網站http://www.oauth.net/2/。
Live Connect服務提供了JavaScript API和REST API兩種調用方式,分別可以在前台或者後台進行使用。
使用者提示介面說明
當使用者首次使用Live Connect服務登入到時,Live Connect服務顯示一個是否允許訪問的彈出對話方塊,這個對話方塊向使用者說明你的網站需要訪問使用者的哪些資訊,若需要個人化這個對話方塊,請參考以下資訊
顯示內容 |
屬性 |
1.網站logo |
在Basic Information 頁, Application logo image屬性中進行設定 |
2.網站網域名稱 |
在API Settings 頁, Redirect Domain屬性中進行設定 |
3.網站名稱 |
在Basic Information 頁, Application name 屬性中進行設定 |
4.網站使用規定超連結 |
在Basic Information 頁, Terms of service URL 屬性中進行設定 |
5.網站隱私權聲明超連結 |
在Basic Information 頁, Privacy URL 屬性中進行設定 |
以下是詳細說明圖片:
圖 詳細說明
實現OAuth2.0驗證的代碼如下:
Project: SkyDrive Photos Sample File: MainPage.xaml.cs
Remove
/// <summary>
/// The URI for the OAuth service's Authorize endpoint.
/// </summary>
private static readonly string OAuthAuthorizeUri = "https://oauth.live.com/authorize";
/// <summary>
/// Build the OAuth URI.
/// </summary>
/// <param name="scopes">The requested scopes.</param>
/// <returns>The OAuth URI.</returns>
private Uri BuildOAuthUri(string[] scopes)
{
List<string> paramList = new List<string>();
paramList.Add("client_id=" + HttpUtility.UrlEncode(MainPage.ClientId));
paramList.Add("scope=" + HttpUtility.UrlEncode(String.Join(" ", scopes)));
paramList.Add("response_type=" + HttpUtility.UrlEncode("token"));
paramList.Add("display=" + HttpUtility.UrlEncode("touch"));
paramList.Add("redirect_uri=" + HttpUtility.UrlEncode(MainPage.RedirectUri));
UriBuilder authorizeUri = new UriBuilder(MainPage.OAuthAuthorizeUri);
authorizeUri.Query = String.Join("&", paramList.ToArray());
return authorizeUri.Uri;
}
/// <summary>
/// Launch the OAuth flow.
/// </summary>
private void LaunchOAuthFlow()
{
this.loadingGrid.Visibility = Visibility.Visible;
this.authorizationBrowser.Navigating += this.OnAuthorizationBrowserNavigating;
this.authorizationBrowser.Navigated += this.OnAuthorizationBrowserNavigated;
this.authorizationBrowser.Navigate(this.BuildOAuthUri(this.scopes));
}
原始碼檔案
- UserInfo.cs——表示JSON請求返回的使用者資訊資料
- AlbumInfo.cs——表示JSON請求返回的使用者相簿資料
- MainPage.xaml.cs——應用程式的主要邏輯處理