乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Windows Phone 7 – 學習使用Live SDK

       旭龍 2012-08-12
      隨著Windows Live不斷地改版為SkyDrive 增加了很多新的功能,再加上WP7本身也提供很多地方與SkyDrive 的連結,例如: Office或如同 這篇的介紹, 讓SkyDrive成為與WP7手機一個儲存與互動的重要媒介。因此,在撰寫App時如果需要提供用戶備份使用設定的功能,過去可以透過DropBox,那我就想說即然是WP7為何不直接使用SkyDriv
        

        隨著Windows Live不斷地改版為SkyDrive 增加了很多新的功能,再加上WP7本身也提供很多地方與SkyDrive 的連結,例如:

        Office或如同這篇的介紹,

        讓SkyDrive成為與WP7手機一個儲存與互動的重要媒介。因此,在撰寫App時如果需要提供用戶備份使用設定的功能,過去可以透過DropBox,那我就想說即然是WP7為何不直接使用SkyDrive就好了呢?因此,往下介紹怎么在WP7中存取SkyDrive。

        〉Live SDK (Live Connect):

        在2011年底MS釋出了Live SDK,該SDK幫助開發(fā)人員解決了需實作OAuth交易的復雜工作,并且採用標準的OAuth 2.0、JSON與Extensible Messaging and Presence Protocol (XMPP)為支援協(xié)定。透過REST的方式來唿叫API,而回傳的結果採用JSON的方式進

        行溝通。因此,該API支援各種平臺:Web、Desktop、Mobile app。那么Live Connect提供了那些Services呢?

        Skydrive:

        支援開發(fā)的應用程式指定Windows Live ID藉由Live Connect API存取Skydrvice中的文件與多媒體,包括:新/修/刪/查檔案與資料夾。

        Hotmail:

        支援存取Windows Live ID上的連絡人與行事歷,讓開發(fā)的應用程式可建立/編寫聯(lián)絡人、建立事件與提醒等。

        Messenger:

        支援與Messenger上的聯(lián)絡人進行聊天、取得聯(lián)絡人狀態(tài)等。

        Windows Live ID:

        用于驗證用戶與連結他們的個人資訊。

        以上這些服務與API,讓開發(fā)人員可透過網(wǎng)站或App的方式讓用戶隨時與他們的Live功能進行連接。往下介紹相關Live SDK前,使用SDK與撰寫應用時,要記得注意 ,不然送審的過程會被煺件的,要特別小心。

        〉WP7上使用Live Connect操作API (以Managed API為例):

        在操作Live Connect之前最重要的一件事情即是讓程式能夠與Windows Live連接。此時,Live SDK已經(jīng)幫我們準備好了,在過去使用Facebook API、Plurk API裡有一個重要的就是OAuth,它的機制需先至要操作的服務提供者端申請一組Key與權限,接著在App裡建立讓用戶可以登入該服務網(wǎng)站,并且有介面允許授權存取能力給該App,這些動作雖然說沒有很難做,但對于第一次使用的人難免有些混亂的概念,但Live SDK已經(jīng)包裝好了,讓我們很簡單的能力操作它。

        以C#為例,操作Live SDK有叁個重要的元素:

        (1). Microsoft.Live:

        集合包含了讓開發(fā)者簡易地連接Live Connect OAuth進行驗證,以及取得User Session Data與Live Connect REST APIs。

        以下就擷錄針對Microsoft.Live命名空間重要的類別做一些說明:

      Class Description
      LiveAuthClient 用于擷取Live Connect連線過程的Session Data。
      二個重要的參數(shù):client ID and redirect Uniform Resource Identifier (URI)。
      LiveAuthException 用于識別當Auth Process過程發(fā)生Exception時的處理常式。
      LiveConnectClient Live Connect的重要功能,用與Live Connect web service endpoints連接,并且管理Token保持連線的驗證與交易憑證。
      另外,它更包括重要操作Windows Live上必要的方法:
      CopyAsync, DeleteAsync, DownloadAsync, UploadAsync, PostAsync,用于操作WP7的資源發(fā)佈或下載至二端之間。
      LiveConnectException 用于識別當Connect Process過程發(fā)生Excpetion時的處理常式。
      LiveConnectSession 用于取得目前Connect的Session。其內容包括:目前與Live Connect使用的Token有效期限、Token屬性等。
      LiveDownloadProgressChangeEventArgs 在Download Operation過程中每一時間點下載數(shù)據(jù)量的改變參數(shù)。
      LiveOperationCompletedEventArgs 當Operation完成時所觸發(fā)的事件處理參數(shù)。
      LiveUploadProgressChangedEventArgs 在Upload Operaion過程中每一時間點下載數(shù)據(jù)量的改變參數(shù)。
      LoginCompletedEventArgs 當?shù)侨胪瓿蓵r所觸發(fā)的事件并且回傳需要的事件參數(shù)。

        上表中提到數(shù)個重要類別,以LiveConnectClient最為重要,因此,以下範例將使用該類別實作相關Windows Live上的功能。

        (2). Microsoft.Live.Controls:

        該Controls提供用于操作Live Connect的特性,最常見的即是:「SignInButton class」。在WP7使用Live SDK第一步即是需要將它加入至應用程式,并指定ClientID與Scope屬性告知它該使用怎樣的OAuth驗證來連上Windows Live,這樣才能透過OAuth標準讓用戶授權應用程式可以存取他的Live ID資訊與相關功能。

        在使用SignInButton時,有一些參數(shù)可搭配使用:

        (2-1). BrandingType enumeration:該列舉設定后,Button可呈現(xiàn)對應API的圖標,例如:Hotmail、SkyDrive、Messenger、Windows。

        (2-2). ButtonTextType enumeration:該列舉設定后,Button可呈現(xiàn)相關的文字說明,例如:Connect、Custom、Login、Sigin。

        (2-3). LiveConnectSessionChangedEventArgs class:

        使用SingInButton時搭配「SessionChanged」處理常式所代入的事件參數(shù),用于監(jiān)控Live Connect連線時Session的改變。

        (3) Socpes and Permissions (學習Live SDK該部分的觀念一定要先建立):

        Microsoft.Live與Microsoft.Live.Controls提供App方便使用OAuth協(xié)定登入Live Connect,但在讓開發(fā)的App可以連接Live Connect前,在Live Connect API有定義App存取權限觀念,在Live Connect API稱為Scopes,每一個Scopes代表不同的Permission Level與對應的參數(shù)。

        然而,針對Scopes Types主要分成叁種類型,這叁種類型有對應的參數(shù)是撰寫App時可以用來取得實際資料的部分,往下將加以說明:

      --------------------------------------------------------------------------------------------------------------------------------------

      (3-1). Core scopes: 為重要連接Live Connect APIs與涉及使用者的核心資料與聯(lián)絡人資訊。主要範圍主要有叁類: Scope Enables wl.basic 讀取已連結的用戶基本資訊,與聯(lián)絡人清單。存取REST中的User與Contact二大物
        

        (3-1). Core scopes:

        為重要連接Live Connect APIs與涉及使用者的核心資料與聯(lián)絡人資訊。主要範圍主要有叁類:

      ScopeEnables
      wl.basic讀取已連結的用戶基本資訊,與聯(lián)絡人清單。存取REST中的User與Contact二大物件。
      wl.offline_access允許App有能力在任何時間讀取與更新用戶的資料。如果沒有設定該值,App只能在每一次進行登入連接Live Connect才能操作。
      wl.signin單一登入行為(Single sign-in behavior)。設定該值,用戶透過App登入Live Connect也一併登入WebSite。更詳細的說明可參考<Signing users in>。

        從上述即可得知這叁個Scopes是讓App可以存取/控制資料的基本設定值,在wl.basic的物件結構要特別注意,如下:

      REST ObjectStructure (取值的,key)
      Userlink
      Userupdate_time
      Contactid
      Contactfirst_name
      Contactlast_name
      Contactname
      Contactgender
      Contactis_friend
      Contactis_favorite
      Contactuser_id
      Contactemail_hashes
      Contactbirth_day (存取該結構值,需要scope多增加:wl.contacts_birthday)。
      Contactbirth_moth (存取該結構值,需要scope多增加:wl.contacts_birthday)。
      Contactupdated_time

        更詳細的存取物件結構,可以參考<REST API>。

        (3-2). Extends:

        該scopes允許App操作使用者的延伸性個人資料與聯(lián)絡人資訊。其主要範圍相當多:

      ScopeEnables
      wl.birthday讀取用戶的生日資訊,包括:年(birth_year)/月(birth_month)/日(birth_day)。
      wl.calendars讀取用戶的行事曆與事件資訊。
      wl.calendars_update存取(r/w)用戶的行事曆與事件。
      wl.contacts_birthday讀取用戶所有聯(lián)絡人生日(年/月/日)。配合wl.basic中birth_day, birth_moth使用。
      wl.contacts_calendars讀取用戶所屬與其他人分享給該用戶的行事曆與事件資訊。
      wl.contacts_create建立新的聯(lián)絡人至用戶的通訊錄。
      wl.contacts_photos讀取用戶的albums、photos、videos與audios,以及這些資源的相關comments與tags;也支援讀取其他用戶分享給該用戶的資源。 
      操作元件:Album, Audio, Photo, and Video objects。
      wl.contacts_skydrive讀取其他用戶分享給該用戶的skydrive資源,也能存取用戶所屬的skydrive資源。
      wl.emails讀取用戶的personal、preferred與business email。 
      可用結構:emails / preferred / account / personal / business。
      wl.events_create建立事件在該用戶default的行事曆。操作元件:Event object。
      wl.messenger允許登入Windows Live Messenger與Presence Protocol (XMPP) service。 
      詳細內容可以參考<Getting started using Messenger with XMPP>的介紹。
      wl.phone_numbers讀取用戶的personal、preferred與business phone number。 
      可用結構:phones / personal / business / mobile。
      wl.photos讀取用戶的albums、photos、videos與audios。
      wl.postal_addresses讀取用戶的postal address。可用結構相當多,可以點擊連結。
      wl.share允許更新用戶的狀態(tài)訊息。存取的物件:Activity Object。
      wl.skydrive讀取用戶所屬Skydrive中的檔案。
      wl.skydrive_update存取(r/w)用戶所屬Skydrive中的檔案。
      wl.work_profile讀取用戶的員工與工作地址資訊。 
      可用結構:work / employee (work array) / name (employee object) / position (work array) / name (position object)

        更詳細的存取物件結構,可以參考<REST API>。

        (3-3). Developers:該scopes允許App使用開發(fā)者的Client IDs進行操作。

      ScopeEnables
      wl.applications讀取開發(fā)者的Client ID,該Client ID驗證後,可配合Live Connect APIs產(chǎn)生功用。 
      操作元件:Application object's structures,用於取得該Client ID在Live Connect上註冊的相關資訊。
      wl.applications_create代表開發(fā)者建立了一個新的Client ID。操作元件:Applicationobject's structures。

        更詳細的存取物件結構,可以參考<REST API>。

        以上介紹了Live SDK重要的觀念與使用的元件/參數(shù)之后,還有蠻多的Structure需要參考額外的資料進行說明,但往下先接著透過幾個簡單的範例介紹如何操作Live SDK。

        [事前工作]

        在體驗使用Live SDK時,首先第一個任務需要至「https://manage.dev./Applications/Index」申請您實作App使用的Client ID,該Client ID用于識別App在Live Connect定義為何種應用程式,由于它需要綁定一組Windows Live ID,因此需要透過一個可接收核可性的ID來當作申請。申請方式非常容易,在這篇就不多加以說明。產(chǎn)生Client ID的結果如下:

        

      image

       

        記得來 安裝Live SDK。

        A. 登入Windws Live:

        擷錄<>中的內容,參考Core Scope設定讓App提供用戶可以登入Windows Live,并且取得用戶的資訊。其設定步驟如下:

        (a-1). 拉SigninButton至畫面中,設定Scopes與Client ID;(至于怎么在Tools加上SigninButton,請參考<Referencing the APIs with C#>)

         1: <!--TitlePanel contains the name of the application and page title-->
         2: <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
         3:    <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
         4:    <my:SignInButton Name="btnLogin" 
         5:                     Scopes=
      "wl.signin wl.basic wl.offline_access" 
         6:                     SessionChanged=
      "btnLogin_SessionChanged" 
         7:                     HorizontalAlignment=
      "Left"
         8:                     ClientId=
      "00000000480715FF"                     
         9:                     /
      >
        10: </StackPanel>

        設定Scopes包括叁個Core scopes:wl.signin wl.basic wl.offline_access叁個用「空白」隔開。并且註冊SessionChanged事件,用于監(jiān)控Live Controls登入后觸發(fā)的狀態(tài)改變事件。

        (a-2) 建立一個LiveConnectClient變數(shù),并且隨著SigninButton觸發(fā)SessionChanged事件來啟動該變數(shù)連接Live Connect;

         1: private LiveConnectClient gLiveClient;
         2:  
         3: private void btnLogin_SessionChanged(object sender, LiveConnectSessionChangedEventArgs e)
         4: {
         5:     //LiveConnectSessionStatus.Connected代表SigninButton已完成OAuth認證
         6:     if (e != null && e.Session != null && e.Status == LiveConnectSessionStatus.Connected)
         7:     {
         8:                    //初始化LiveConnectClient進行存取資料的任務
         9:         this.gLiveClient = new LiveConnectClient(e.Session);
        10:         //註冊GetCompleted事件
        11:         this.gLiveClient.GetCompleted += OnGetMe;
        12:         //要求取得個人(me)層級的資訊
        13:         this.gLiveClient.GetAsync("me"null);
        14:     }
        15:     else
        16:     {
        17:         this.gLiveClient = null
        18:         this.tbError.Text = e.Error != null  e.Error.ToString() : string.Empty;
        19:     }
        20: }
        21:  
        22: private void OnGetMe(object sender, LiveOperationCompletedEventArgs e)
        23: {
        24:     this.gLiveClient.GetCompleted -= OnGetMe; 
        25:     if (e.Error == null)
        26:     {
        27:         //使用wl.basic中的contact物件結構:first_name取得值
        28:         string firstName = e.Result.ContainsKey("first_name") ? 
        29:                             e.Result["first_name"as string : string.Empty;
        30:  
        31:         //使用wl.basic中的contact物件結構:last_name取得值
        32:         string lastName = e.Result.ContainsKey("last_name") ? 
        33:                             e.Result["last_name"as string : string.Empty;
        34:         this.tbGreeting.Text = "Welcome " + firstName + " " + lastName;
        35:     }
        36:     else
        37:     {
        38:         this.tbError.Text = e.Error.ToString();
        39:     }
        40: }

        在上述的程式範例中,有一個重要的關鍵字:「me」。此時,也許您會覺得奇怪,這個是什么呢?其me代表的是一個Path的觀念,它定義了目前要存取的範圍是在何某Path下,例如:存取個人的聯(lián)絡人:/me/contacts;某一個用戶的聯(lián)絡人:/USER_ID/contacts。



      --------------------------------------------------------------------------------------------------------------------------------------


      然而,Path的關鍵值,往下將加以說明: (a-3) Understanding the objects: 對于Live Connect REST API而言,每一個資訊的分類都算是一個Object。該Object包括:子物件集合、陣列、Values。 要怎么使用這些物件,則
        

        然而,Path的關鍵值,往下將加以說明:

        (a-3) Understanding the objects:

        對于Live Connect REST API而言,每一個資訊的分類都算是一個Object。該Object包括:子物件集合、陣列、Values。

        要怎么使用這些物件,則需要先了解unique path,它類似ID一樣代表每一個物件存取的識別與範圍。

      ObjectDescriptionValue object paths
      Activity儲存用戶的活動feed與狀態(tài)訊息。/me/share 
      /USER_ID/share
      Album用戶在Skydrive裡Album的資訊內容。 
      包括:photos、videos、audios、files與folders的組合。
      /me/albums 
      /USER_ID/albums 
      /ALBUM_ID 

      一個Album物件可回傳以下的Path內容: 
      /ALBUM_ID/files 
      /me/skydrive/files 
      /me/skydrive/shared/files 
      /me/skydrive/shared/albums 
      /USER_ID/skydrive/files
      Application儲存與Live Connect互動的Client ID資訊。/me/applications 
      /USER_ID/applications 
      /APPLICATION_ID
      Audio用戶儲存于Skydrive的Audio資訊。/AUDIO_ID 

      一個Audio物件可回傳以下的Path內容: 
      /ALBUM_ID/files 
      /FOLDER_ID/files 
      /me/skydrive/files 
      /USER_ID/skydrive/files
      Calendar儲存用戶的Calendar資訊。/me/calendars 
      /USER_ID/calendars 
      /CALENDAR_ID
      Comment儲存在用戶Skydrive裡photos或videos的Comment資訊。/PHOTO_ID/comments 
      /VIDEO_ID/comments 
      /COMMENT_ID
      Contact用戶在Hotmail上的聯(lián)絡人。如果聯(lián)絡人資訊中的is_friend值為true,取出的聯(lián)絡人也是friend.。/me/contacts 
      /USER_ID/contacts 
      /CONTACT_ID
      Error由Live Connect API回傳的錯誤資訊。None
      Event儲存在用戶Calendar上的事件。/me/events 
      /USER_ID/events 
      /CALENDAR_ID/events
      File用戶在Skydrive中的檔案。/FILE_ID 

      一個File物件可回傳以下的Path內容: 

      /FOLDER_ID/files 
      /me/skydrive/files 
      /me/skydrive/shared 
      /me/skydrive/shared/files 
      /USER_ID/skydrive/files
      Folder用戶在Skydrive中的資料夾。它能包括:photos、videos、audios、files與子資料夾的組合資訊。/FOLDER_ID 

      一個Photo物件可回傳以下的Path內容: 
      /ALBUM_ID/files 
      /FOLDER_ID/files 
      /me/skydrive/files 
      /me/skydrive/shared/files 
      /USER_ID/skydrive/files
      Friend用戶朋友的資訊。朋友是聯(lián)絡人的子集合,并且搭配publicly visible relationship 定義可見度。因此,Contact物件的資料會比Friend完整。它能取到的內容,最簡單ID與Name。/me/friends 
      /USER_ID/friends
      Permissions儲存scopes清單。/me/permissions 
      /USER_ID/permissions
      Photo用戶儲存于Skydrive的Photo資訊。/PHOTO_ID 

      一個Photo物件可回傳以下的Path內容: 
      /ALBUM_ID/files 
      /ALBUM_ID/photos 
      /FOLDER_ID/files 
      /me/skydrive/files 
      /me/skydrive/shared/photos 
      /USER_ID/skydrive/files
      Tag在Skydrvice中photo或video上標記的關聯(lián)資訊。/PHOTO_ID/tags 
      /VIDEO_ID/tags 
      /TAG_ID
      User代表一個用戶。/me 
      /USER_ID
      Video用戶儲存于Skydrive的Video資訊。/VIDEO_ID 

      一個Video物件可回傳以下的Path內容: 
      /ALBUM_ID/files 
      /ALBUM_ID/videos 
      /FOLDER_ID/files 
      /me/skydrive/files 
      /me/skydrive/shared/videos 
      /USER_ID/skydrive/files

        了解上述Path與對應物件使用的方式,簡單的舉個例子:想要取出自己Skydrive中的所有Photo資訊:

         1: //"/me/skydrive/files?filter=photos":代表要從自己的Skydrive中找出PHOTOS的檔案
         2: this.gLiveClient.GetAsync("/me/skydrive/files?filter=photos"null);

        其中過濾的參數(shù)可使用:albums、audio、folders、photos、videos。

        [範例程式]

        由于內容太多了,範例部分移至加以說明。

        ======

        以上是分享怎么存取SkyDrvice的內容,因為我覺得透過SkyDrive可以配合很多的應用,因此我自己很希望去了解怎么存取它的內容,這樣我就可以放置一些我需要內容在SkyDrive裡,透過自己開發(fā)的App去讀取內容或做Shared的功能,至于Shared的功能也可以配合

        Socket的應用來進行。因此,WP7裡一個App可以納入很多好用的開發(fā)API與概念,讓自己App更加生活化。

        本文來自pou的博客,原文地址:http://www./pou/archive/2012/03/22/70936.aspx

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多