使ってみよう! Live Framework

第10回 Live Framework-enabled Webサイト(1/2)

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

Windows Live ID Delegated Authentication SDK

承認要求URLの作成には,Windows Live ID Delegated Authentication SDKを使用します。Download CenterからSDKダウンロードします。SDKは多様なプログラミング言語のものが用意されています。本連載ではVB.NETのものを使用します。Live Framework発表以前からある委任認証のためのライブラリなため,少し変更して使用する必要があります。

SDKに含まれるコードをWebサイトプロジェクトに追加しておきましょう。ソリューションエクスプローラからWebサイトを右クリックし,メニューの「ASP.NETフォルダの追加」から「App_Code」を選択します。作成されたApp_Codeフォルダ内へ,SDKにあるWindowsLiveLogin.vbをコピーします図7⁠。

図7 App_Codeフォルダ

図7 App_Codeフォルダ

SDKのファイルは「%programfiles%\Windows Live ID\ DelAuth-VB」にコピーされています。

承認要求URLの提示

Webページに承認要求ページへのリンクを表示できるようコーディングしてみましょう。

承認要求URLのパラメータ作成に必要な情報をweb.configに記述します。<appSettings />部分を以下のように変更します。これらの値はWindowsLiveLogin.vbに記述されているWindowsLiveLoginクラスから使用します。

<appSettings>
  <add key="wll_appid" value="Application ID/">
  <add key="wll_secret" value="Secret Key"/>
  <add key="wll_securityalgorithm" value="wsignin1.0"/>
  <add key="wll_returnurl"
       value="http://example.jp/WebSite/delauth-handler.aspx"/>
  <add key="wll_policyurl"
       value="http:// example.jp/WebSite/Policy.aspx"/>
  <add key="wll_consenturl"
       value="https://developer.mesh-ctp.com/web/apps/appconsent.aspx"/>
  <add key="wll_appurl" value="Mesh/Applications/(ID)"/>
</appSettings>

設定のkeyとvalueは以下の通りです。Azure Services Developer PortalのプロジェクトSummaryページから必要な部分をコピーします。

Key Value
wll_appid Application ID
wll_secret Secret Key
wll_securityalgorithm セキュリティアルゴリズム。⁠wsignin1.0」を指定します。
wll_returnurl Return URL
wll_policyurl プライバシーポリシーURL
wll_consenturl 承認要求URL
wll_appurl Mesh上のWebサイトを表す相対URL

Default.aspxの<body>内のHTMLを次のように編集します。リンクを表示し,リンク先は_DefultクラスのConsentUrlフィールドの値になるようにしています。

<form id="form1" runat="server">
    <div>
        <span id="linkConsent" runat="server"><a href="<%=ConsentUrl%>">アクセス許可の設定</a></span>
    </div>
</form>

Default.aspx.vbのコード部分は以下のように記述します。

Imports System.Web.Configuration
Imports Microsoft.LiveFX.Client
Imports Microsoft.LiveFX.ResourceModel
Imports WindowsLive

Partial Class _Default
    Inherits System.Web.UI.Page

    ' 承認要求ページのURL
    Public ConsentUrl As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' オファーとアクション
        Const offers As String = "LiveMeshFolder.Full,Profiles.Read,Contacts.Write,News.Full"

        ' WindowsLiveLogin インスタンス生成 True 指定で Web.config の値を使用
        Dim login = New WindowsLiveLogin(True)

        ' 承認要求 URL の作成
        Me.ConsentUrl = login.GetConsentUrl(offers).Replace("Delegation.aspx", ) & _
            "&appUrl=" & HttpUtility.UrlEncode(WebConfigurationManager.AppSettings("wll_appurl"))

    End Sub
End Class

Windows Live ID Delegated Authentication SDKにあるWindowsLiveLoginクラスのGetConsentUrlメソッドを使用するとweb.configの設定値から承認要求URLを作成できます。メソッドの引数はオファーとアクションの文字列です。ただし,appUrlパラメータに対応していないなど不都合があるため,メソッドの戻り値を加工しています。承認要求URLのファイル名がDelegation.aspxの固定値になっているため削除し,appUrlパラメータを追加しています。クラスをLive Frameworkに対応させる方がスマートですが,今回はこのようにしています。

ここまで記述したら一度デバッグ実行してみましょう。ページ上のリンク図8をクリックし,図5のような承認要求ページへ移動すれば成功です。まだ戻り先のページの用意や処理を書いていませんので,それ以降は動作しません。

図8 実行画面

図8 実行画面

今回はここまでです。次回,承認情報の受信処理を行い,Live Frameworkを利用してMeshサービスへアクセスします。

著者プロフィール

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

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

URL:http://katamari.jp