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

第27回 Live FrameIt SDK ── 仮想フォトフレームの作成(2)

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

はじめに

前回に引き続きLive FrameItのSDKを利用した仮想フォトフレームアプリケーションの作成です。今回はユーザーのコレクションを取得してLive FrameItから配信される画像を取得・表示まで行います。また,今回は仮想フォトフレームとなる図1のようなアプリケーションを作成しながら進めます。

図1 仮想フォトフレーム

図1 仮想フォトフレーム

作成するサンプルアプリケーションのソースコードは,この記事の最終ページからダウンロードできます。

登録トークンを使用したデイバスIDの取得

前回デバイスをLive FrameItに登録するために必要なデバイスIDの取得方法を紹介しました。その際にWindows Live IDアカウントによるユーザー認証をデバイス(またはアプリケーション)側で実装するものと,Live FrameItのWebサイトで行う方法によるもののうち,前者のコードを示しました。今回の最初は後者のコードを簡単に紹介します。Windows Live ID Client SDKを使用しないため,たいていのプログラミング言語で実装が可能です。ただし紹介するコードは前回同様VB.NETです。

デバイス側でLive IDアカウントによるユーザー認証を行わない代わりに登録トークンという文字列を使用してデバイスをLive FrameItへ登録します。詳しい手順は前回を参照してください。

登録トークンの取得

まずデバイスは,登録トークンをLive FrameItサービスへ要求し取得します。Webサービスを呼び出すためにサービス参照を追加する必要があります。こちらも詳しくは前回を参照してください。登録トークンの取得には,サービス参照によって作成されたクラスDeviceSvcSoapClientクラスのGetClaimTokenメソッドを使用します。メソッドの引数は,製造元の名前とシリアル番号です。いずれも64文字以下で自由に設定します。

' (注: まだ不完全な例です)
Dim client = New DeviceSvcSoapClient
Dim manufacturerId = "Virtual Photo Frame"
Dim serialNumber = Now.Ticks.ToString
Dim result = client.GetClaimToken(manufacturerId, serialNumber)
Dim calimToken = result.ClaimToken

GetClaimTokenメソッドの戻り値は,GetClaimTokenResults型です。このクラスの持っているClaimTokenプロパティを参照すると登録トークンが取得できます。この取得したトークンをユーザーに提示し,Live FrameIt Webサイト図2でトークンをユーザーに入力してもらいます。GetClaimTokenResults.ClaimUrlプロパティを参照するとユーザーがトークンを入力するWebページのアドレスを取得できます。

図2 登録トークンの入力

図2 登録トークンの入力

デイバスIDの取得

ユーザーによる登録トークンの入力が完了すると,登録トークン要求時に指定した製造元の名前とシリアル番号および取得した登録トークンを使用して,デバイスIDが取得できます。取得にはDeviceSvcSoapClientクラスのDeviceBindメソッドを使います(前回はDeviceBindUserメソッドを使いました)⁠Live IDアカウントのユーザー認証がないためHTTPヘッダーフィールドの追加など前回のような複雑な処理は必要ありません。以下に一連のコードを示します。

Private Sub RegisterDeviceWithToken()
    Dim result As DeviceBindResults
    Using client = New DeviceSvcSoapClient
        Dim manufacturerId = "Virtual Photo Frame" '製造元の名前
        Dim serialNumber = Now.Ticks.ToString ' シリアル番号

        ' 登録トークンの取得
        Dim tokenResult = client.GetClaimToken(manufacturerId, serialNumber)
        If tokenResult.ResponseCode <> 0 Then
            ' (ResponseCode = 1 のとき取得失敗)
            Exit Sub
        End If

        ' ユーザーにトークンの提示
        MessageBox.Show(tokenResult.ClaimUrl & " へアクセスして登録トークン " & _
                        tokenResult.ClaimToken & " を設定してください。" & vbCrLf & _
                        "設定完了後 OK ボタンをクリックしてください。")

        ' デバイスIDの取得
        result = client.DeviceBind(tokenResult.ClaimToken, manufacturerId, serialNumber)
    End Using

    If result.ResponseCode = 0 Then
        ' 取得成功 (ResponseCode = 0)

        ' デバイスIDの保存例 (プロジェクトのプロパティの設定で String型の DeviceId という値を追加しておきます)
        My.Settings.DeviceId = result.DeviceId
        My.Settings.Save()
    End If
End Sub

著者プロフィール

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

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

URL:http://katamari.jp

コメント

コメントの記入