使ってみよう! Windows Live SDK/API

第40回 Live Spaces API/SDK(2)──Live IDアカウントで認証

この記事を読むのに必要な時間:およそ 9.5 分

はじめに

今回も前回に引き続いてLive SpacesのAPI/SDKについてです。前回は,Live Spaces MetaWeblog APIを利用してブログへ記事の投稿をしました。その際に認証方法としてメール投稿用のユーザー名とパスワードを使用しましたが,今回はWindows Live IDアカウントを使用した認証を使ってみましょう。また,投稿以外の操作も行います。

クライアント認証

Windows Live IDアカウントによる認証方法は,チケットと呼ばれる文字列をWindows Live ID認証サーバーから取得して,そのチケットを利用して対象のLiveサービスにアクセスします図1)⁠今回対象となるLiveサービスはLive Spacesです。PC上で動作するクライアントアプリケーションでこのような認証を行うためにLive ID Client SDKという開発者ツールが提供されています。アプリケーションはこのSDKで提供されるサインイン ダイアログを利用してユーザー認証を行います。

図1 クライアント認証の仕組み

図1 クライアント認証の仕組み

今回はLive ID Client SDKを使用しますので下記を参考にインストールを行ってください。

開発環境

Live ID Client SDK

Live ID Client SDKは,ダウンロードページからWLIDClientSDK.msiをダウンロードしてインストールします。

インストーラーを実行すると,ライブラリーとサンプアプリケーションがインストールされます。通常,ライブラリーはC:\Program Files\Common Files\microsoft shared\WLIDClientにインストールされます(64bit Windowsの場合は,Program Files (x86)フォルダー)⁠サンプルは,ドライブ直下にWLID Client Sampleフォルダーが作られ,実行ファイルとソースコードが配置されます。

64bit Windows環境にインストールする場合は少し注意が必要です。SDKのインストール後にサンプルアプリケーションが自動で起動しますが,このアプリケーションが64bitに対応していないため強制終了してしまいます。サンプルアプリケーションを確認するためには,サンプルのソースコードのプロジェクトをVisual Studioで開き,プロジェクトのプロパティからプラットフォームのターゲットをx86に指定し,ビルドしなおすことで可能です図2)⁠

図2 プラットフォームターゲットの指定

図2 プラットフォームターゲットの指定

プロジェクトの作成とライブラリーの参照

本記事ではVisual Studio 2010とVisual Basicを使用しますが,もちろんC#でもSDKは利用できます(SDK付属のサンプルはC#です)⁠また,バージョンも2008で問題ありません。

まずは,コンソールアプリケーションなどの適当なWindowsプロジェクトを作成します。次に,ライブラリーの参照の追加をします。メニューの「プロジェクト」「参照の追加」を選択し,開いたウィンドウの.NETタブから「Microsoft.WindowsLive.Id.Client」を選びます。もしこの項目がない場合は,参照タブからSDKのインストール先から直接「Microsoft.WindowsLive.Id.Client.dll」を選択します。

サインイン処理

それでは,Live ID Client SDKを利用して,Windows Live IDアカウントを使用してLive Spacesにアクセスするためのコードを書いていきます。

最初にサインイン ダイアログ図3を表示してサインインを行うコードを記述します。サインインや認証処理はライブラリーに任せ,アプリケーションはダイアログ表示の呼び出しを行います。ユーザーは表示されたダイアログにWindows Live IDアカウントのメールアドレスとパスワードを入力しサインインすることになります。ユーザーの認証に成功した場合,サインインユーザーのメールアドレスなどは参照できますが,パスワード自体は参照できません。

図3 サインイン ダイアログ

図3 サインイン ダイアログ

この処理にはIdentityクラスとIdentityManagerクラスを使います。Identityクラスはユーザーを表します。Identityクラスのインスタンス生成にIdentityManagerクラスを使用します。Liveサービスの認証サーバーとのやりとりもIdentityManagerが使われます。Identityオブジェクトの作成とサインイン ダイアログの表示するコードは次のようになります。

' Imports Microsoft.WindowsLive.Id.Client と Import 宣言
' IdentityManager, Identity インスタンス生成
Dim manager = IdentityManager.CreateInstance("LiveSpacesSample;***@live.jp;Live Spaces Sample", "Live Spaces Sample")
Dim identity = manager.CreateIdentity

If Not identity.IsAuthenticated Then
    ' 認証されていない場合

    If identity.Authenticate Then ' ダイアログの表示
        ' (認証が成功した場合)
    Else
        ' (ユーザーによりキャンセルされた場合)
    End If
End If

IdentityManagerのインスタンスは,CreateInstanceメソッドにアプリケーションIDとアプリケーション名を渡すことで取得します。アプリケーションIDは,組織名・メールアドレス・アプリケーション名を「;」で区切った文字列です。IDの登録などの作業は必要なく,適切と思われる値を設定します。

Identityのインスタンスは,IdentityManager オブジェクトのCreateIdentityメソッドの戻り値として得ます。Identity オブジェクトのAuthenticateメソッドを呼び出すことでサインイン ダイアログが表示されます。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入