[Windows Store App] Windows Store App with LiveSDK by C# – Scopes and Permissions

在前面的兩篇文章裡簡單的介紹過說,
如何簡單的登入(連結)Live ID,以及使用SignInButton 的注意小事項
但是單單這樣而已,基本上這個App沒甚麼用呀!
一個App使用Live SDK時,除了利用SSO外,另一個重要的就是如何得到這個Live ID的各種資料。
在讀取資料之前,先來介紹一下Scopes..........

在前面的兩篇文章裡簡單的介紹過說,
如何
簡單的登入(連結)Live ID,以及使用SignInButton 的注意小事項
但是單單只是登入(連結)Live ID,基本上這個App沒甚麼用呀!

一個App使用Live SDK時,除了利用SSO外,
另一個重要的就是如何得到這個Live ID的各種資料。

目前Live ID裡面所擁有的資料基本上包含了

  • 個人基本資料
  • 行事曆與事件
  • 通訊錄(聯絡人)
  • E-Mail
  • SkyDrive

在讀取資料之前,先來介紹一下Scopes,
由於想要使用Live Connect的資訊時,不論是讀取或是寫入,
App必須要取得使用者的同意,這樣的權限,就稱呼為Scope (領域!?),
Live Connect有許許多多的Scopes,分別授予給不同的層級,這也算是種安全性的處理。
例如今天如果只是要存取使用者個人資料,那這個APP就不應該也擁有存取行事曆的能力。

回到前兩篇有提到這兩段程式碼


<-- in .xaml-->
<live:SignInButton Scopes="wl.signin wl.basic" />

// in .xaml.cs
LiveAuthClient auth = new LiveAuthClient();
LiveLoginResult authResult = await auth.LoginAsync(new List<string>() { "wl.signin", "wl.basic", "wl.birthday" });

其中的wl.signin、wl.basic就是所謂的Scopes。
存取所需要的資料時,如果沒有決定足夠的Scopes時,想當然的就不能做到想要做的事情啦!

Scopes主要可以分成三種類型:Core, Extended, Developer,並往下劃分可分成....

  • Core - 核心領域 - 基本資料的存讀取
    • wl.basic *
      基本個人檔案的讀取權。
      啟用使用者連絡人清單的讀取權。
    • wl.signin *
      單一登入行為。
      當使用者登入 Live Connect 時也會登入到此APP (Metro !?)。
    • wl.offline_access
      App擁有隨時讀取和更新使用者資訊的能力。
      否則只有在使用者登入 Live Connect 且使用App時,才能存取使用者資訊。
  • Extended - 擴充領域 - 下列資料的存讀取
    • wl.birthday
      使用者生日資訊的讀取權。
    • wl.work_profile
      使用者雇主及工作職位資訊的讀取權。
    • wl.emails
      使用者私人、慣用以及公司電子郵件地址的讀取權。
    • wl.phone_numbers
      使用者私人、公司及行動電話號碼的讀取權。
    • wl.postal_addresses
      使用者郵寄地址的讀取權。
    • wl.share
      可更新使用者狀態訊息的權限。
    • wl.calendars
      使用者行事曆和事件的讀取權。(事件部分測試時,是指尚未發生的事件)
    • wl.calendars_update
      使用者行事曆和事件的讀取和寫入權限。

      將包含wl.calendars的權限
    • wl.events_create
      使用者預設行事曆上建立權限。
    • wl.contacts_birthday
      使用者連絡人生日資訊的讀取權。
      包含wl.birthday的權限
    • wl.contacts_create
      建立新連絡人的權限。
    • wl.contacts_calendars
      啟用其他使用者與使用者共用的任何行事曆和事件讀取權。

      將包含wl.calendars的權限
    • wl.skydrive
      使用者儲存在 SkyDrive 的檔案讀取權。
    • wl.skydrive_update
      使用者儲存在 SkyDrive 的檔案讀取和寫入權限。

      將包含wl.skydrive的權限
    • wl.contacts_skydrive
      其他使用者與使用者共用的 Microsoft SkyDrive 檔案的讀取權。

      將包含wl.skydrive的權限
    • wl.photos
      使用者相片、影片、音訊及專輯的讀取權
    • wl.contacts_photos
      使用者專輯、相片、影片、音訊,以及相關回應和標籤的讀取權。
      將包含wl.photos的權限
    • wl.messenger
      可登入 Windows Live Messenger 可延伸訊息和顯示狀態通訊協定 (XMPP) 服務的權限。
  • Developer - 開發人員領域 - 算是更深入的使用
    • wl.applications
      開發人員用戶端識別碼的讀取權,建立該識別碼的目的是為了與 Live Connect API 一起搭配使用。\
    • wl.applications_create
      替開發人員建立新用戶端識別碼的權限。

更詳細的資料請參考MSDN文件 - Scopes and permissions

因此如果今天你的App將會存取行事曆的話,就是要加上wl.calendars的Scope,甚至是wl.calendars_update的Scope,
如果今天你的App將會存取SkyDrive的話,就是要加上wl.skydrive的Scope,甚至是wl.skydrive_update的Scope。

今天就先簡單整理一下Scopes的部分,
下一篇就來整理一下關於如何取得使用者資料吧!

(莫名其妙地變成系列文了嗎吐舌頭 )

 

參考連結

 


歡迎大家一起到MSDN學習與討論