[Blog翻訳] Messenger Connect を使ったデスクトップ アプリケーションの開発
みなさん、こんにちは。Windows 開発統括部の古内です。昨日に引き続き、今日も Windows Live の Messenger Connect に関する英語 Blog 記事をお届けします。本日のは、2010 年 10 月 15 日に Windows Live for Developers Blog に投稿された Creating Desktop Applications with Messenger Connect の翻訳です。ぜひこちらを参考にして、Messenger Connect を使ったアプリケーションの開発にトライしてみてください! (今回もリンク先の情報は英語ばかりです。スミマセン...)
Messenger Connect の機能を使ったデスクトップ アプリケーションの開発
マイクロソフトは Windows Live Messenger Connect (英語) のバージョン 4.1 をリリースしました。Messenger Connect はこのバージョンから正式リリースとなり、一般提供が開始されました。今回の変更点の多くは、Angus Logan がブログ記事の中で説明しています。また、新しく作成した Messenger Connectの開発者ガイド (英語) をぜひチェックしてください。このガイドでは、Windows Live と統合したアプリケーションを作る際の基本的な情報を提供しています。
お客様から寄せられる質問の中でも特に多いのが、Messenger Connect を使ったデスクトップ アプリケーションの作成方法についてです。Messenger Connect に関するドキュメントは Web ベースのアプリケーションについて書かれているものがほとんどですが、実際はデスクトップ用のアプリケーションを作成することもできます。準備に必要なのは Messenger Connect Desktop Starter Kit (Messenger Connect デスクトップ スターター キット) だけです。このキットは現在 MSDN Code Gallery (英語) からダウンロード可能です (Messenger Connect Code Samples – v4.1 (英語) の下の Desktop_Sample_App.zip という名前のファイルです)。
このスターター キットを使い始める前に、まず開発するアプリケーションを https://manage.dev.live.com (英語) で登録する必要があります。この作業はほんの数分で済みます。登録プロセスの詳細な手順については、Messenger Connect のドキュメント (英語) を参照してください。
スターター キットには、2 種類のサンプル プロジェクトが含まれています。まず最初に使用するのにおすすめなのは AuthTest プロジェクトです。このプロジェクトは、Messenger Connect の認証および同意プロセスの基本的な使用方法を紹介するために用意されたものです。このプロジェクトを正常にコンパイルして実行するために、AuthTest プロジェクト内の SigninTester.cs ファイルを開き、次の行を探します。
AppInformation appInfo = new AppInformation("00000000YourClientID", "YourSecretKey", requestedScopes);
行内の値を、アプリケーションの登録時に割り当てられたクライアント ID と秘密キーに書き換えます。
サンプルをコンパイルして実行すると、次のような普通のダイアログ ボックスが表示されます。
まだ大したことは起こりませんが、テキスト ボックスに「https://apis.live.net/V4.1」というエンドポイントが入力されていることに注目してください。これについては後ほど説明します。[SignIn] をクリックして先に進みましょう。すると、次のような Windows Live の同意ダイアログ ボックスが表示されます。
有効な Windows Live ID とパスワードを入力し、[Connect] をクリックします。ここで先ほどのサンプル アプリケーションに戻ると、[SignIn] だったボタンが [Navigate] に変わっているのがわかります。このボタンをクリックするとダイアログが更新され、https://apis.live.net/V4.1 に配置されているトップレベルの REST データが表示されます。
ここで目的の REST エンドポイントをコピーして URI テキスト ボックスに貼り付けると、そのエンドポイントに移動できます。たとえば、プロファイル情報を表示したい場合は、https://profiles.apis.live.net/v4.0/cid-XXX/Profiles と入力します。XXX には、サインイン後にアプリケーションで受信した CID が入ります。
Messenger Connect で REST エンドポイントがどのような動いているかを把握するには、Windows Live REST Explorer (https://rex.mslivelabs.com/) を使用するとよいでしょう。
ここからは、この間、裏では何が起こっていたかを確認していきましょう。ダイアログ ボックスを閉じて Visual Studio に戻り、SignInTester.cs ファイルを開きます。このファイルが、ここまでの処理のほとんどを実行しています。特に、SigninSynchronous と btnNavigate_Click の 2 つのメソッドに着目してください。
void SigninSynchronous()
{
user1 = new MessengerConnectSigninContext();
Collection<Scope> requestedScopes = new Collection<Scope>();
requestedScopes.Add(Scope.ContactsView);
AppInformation appInfo = new AppInformation("00000000YourClientID", "YourSecretKey", requestedScopes);
user1.GetToken(appInfo);
EnableMessengerConnectBrowsing();
}
SigninSynchronous メソッドは、ユーザーが [SignIn] ボタンをクリックすると起動します。最も注目していただきたいのが、次のスコープのコレクションです。
Collection<Scope> requestedScopes = new Collection<Scope>();
この行を使用すると、簡単にスコープを追加して、ユーザーの代わりにアクセス可能な Windows Live データを管理できます。スターター キットでは、次の行のような定義済み定数の WL_Contacts.View スコープが適用されます。
requestedScopes.Add(Scope.ContactsView);
追加のスコープを要求する場合は、追加するスコープごとに requestedScopes.Add を呼び出すだけで済みます。利用可能なスコープやそれぞれの機能の詳細については、Windows Live SDK (英語) を確認してください。
使用するスコープが決まったら、あとはアプリケーションのクライアント ID、秘密キー、および要求されたスコープを含む新しい AppInformation オブジェクトを作成するだけです。GetToken メソッドは、Windows Live の同意ダイアログ ボックスを開き、ユーザーによるサインインが成功した際に返されるアクセス トークンを処理します。
btnNavigate_Click メソッドの定義内容は、Web アプリケーションを記述する場合とよく似ています。
private void btnNavigate_Click(object sender, EventArgs e)
{
try
{
Uri someUri = new Uri(txtUri.Text);
WebRequest webRequest = HttpWebRequest.Create(someUri);
webRequest.Method = "GET";
webRequest.Headers[MessengerConnectConstants.AuthorizationHeader] = user1.AuthorizationToken;
WebResponse webResponse = webRequest.GetResponse();
StreamReader responseStreamReader = new StreamReader(webResponse.GetResponseStream());
String response = responseStreamReader.ReadToEnd();
XmlDocument doc = new XmlDocument();
doc.LoadXml(response);
StringBuilder formattedBuilder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(formattedBuilder, settings);
doc.WriteTo(writer);
writer.Close();
txtOutput.Text = formattedBuilder.ToString();
}
catch (Exception exception)
{
txtOutput.Text = exception.Message + "\r\n" + exception.StackTrace;>
}
}
上記のとおり、このメソッドは URI を取得し、Windows Live ユーザーのアクセス トークンを使用して WebRequest を作成します。これはごくシンプルな例のため、このメソッドの戻り値は単純にダイアログ ボックスに出力されます。REST Explorer と Windows Live SDK を使用すれば、このサンプルにさらに機能を追加することができます。
このスターター キットが Messenger Connect を使ったデスクトップ アプリケーションを開発するうえで、少しでも皆様のお役に立てることを願っています。マイクロソフトでは、Messenger Connect を使用したコードの作成方法についてさらに詳しい情報をお届けできるよう日々取り組んでいます。ご質問やご意見をぜひお寄せください。