Windows 8 でストアからアプリをダウンロードする場合、Microsoft アカウントが必要になります
したがってストアアプリのユーザーは原則このアカウントを持っていることになるので、この情報と連携できればユーザー認証の仕組みを独自に用意しなくてよいので便利です
では Microsoft アカウント情報を参照するにはどうするか
それには Live Connect SDK という開発ツールで連携できるのですが、Windows ストアのダッシュボードで開発するアプリの登録も必要です
こんな画面でとりあえずアプリ名の予約まで済ませておけば動作確認はできます
アプリ名の予約まで完了したら、Visual Studio 上でストアアプリのプロジェクトルートを選択し、コンテキストメニューの [ストア]-[アプリケーションをストアと関連付ける] を選び、ダッシュボードに登録したアプリと目の前の開発中のアプリを結びつけます
これをやらずに Live Connect SDK を利用してもエラーになるのでご注意を
関連付けができたら以下のような感じで Microsoft アカウントのサインインを行いクライアントをインスタンス化します
サインインする際には、Live SDK によりユーザーにアクセス許可を求めるダイアログが表示されます
ここで許可が得られないと当然ながらサインインに失敗してアカウント情報への連携はできません;
/// <summary> /// Live Connect サービス /// </summary> public class LiveConnectService { #region Privates /// <summary> /// アクセス機能範囲 /// </summary> private static readonly List<string> AccessScopes = new List<string>() { "wl.basic", "wl.signin" }; /// <summary> /// Live Connect クライアント /// </summary> private LiveConnectClient client = null; /// <summary> /// Live Connect セッション /// </summary> private LiveConnectSession session = null; #endregion //Privates /// <summary> /// Microsoft アカウントで Live Connect サービスにサインインする /// </summary> /// <returns>成功した場合は true、それ以外は false</returns> public async Task<bool> SignIn() { try { var authClient = new LiveAuthClient(); var result = await authClient.LoginAsync(AccessScopes); if (LiveConnectSessionStatus.Connected.Equals(result.Status)) { this.session = result.Session; this.client = new LiveConnectClient(this.session); return true; } Debug.WriteLine(result.State); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } return false; } }
ここでアクセスしている機能はユーザーの基本情報の参照(wl.basic)とシングルサインオン(wl.signin)だけですが他にもいろいろあります
詳しくは スコープとアクセス許可 (Live Connect) を参照ください!
たとえばユーザーの名前を参照する場合はこんな感じです
var response = await this.client.GetAsync("me"); dynamic result = response.Result; await new MessageDialog(string.Format("こんにちは {0} さん!", result.name)).ShowAsync();
簡単ですね!