認証のセットアップ方法
Windows Live ID API を呼び出せるようにするため、先に次の手順に従って Visual Studio でコンポーネントへの参照を追加しておく必要があります。
参照を追加するには
Visual Studio でプロジェクトを開きます。
ソリューション エクスプローラで、[参照] を右クリックし、[参照の追加] をクリックします (下図)。
[コンポーネント名] で [Microsoft.WindowsLive.ID.Client] を見つけて選択し、[OK] をクリックします。
[参照] ノードを展開して、[Microsoft.WindowsLive.ID.Client] をクリックします。
プロパティ ウィンドウで、Specific Version プロパティを false に設定します (下図)。
コード内で参照を使用するには、using ディレクティブ (C# の場合) または Imports ステートメント (Visual Basic の場合) のいずれかを使用して、その参照を組み込む必要があります。次のコードは、サンプル アプリケーションからの抜粋です。
using Microsoft.WindowsLive.Id.Client;
すべてのコードでアクセスできるように、IdentityManager オブジェクトと Identity オブジェクトのインスタンスを格納する変数をクラス レベルで宣言することをお勧めします。次のコードは、サンプル アプリケーションからの抜粋です。
public partial class MainWindow :Form
{
IdentityManager oIDMgr;
Identity oID;
重要
IdentityManager インスタンスを格納する変数がスコープ外にある場合、これに基づいて作成するすべての Identity オブジェクトが無効となります。
ユーザーを認証するには、IdentityManager および Identity の各オブジェクトのインスタンスを格納する変数を初期化しておく必要があります。クラス コンストラクタでこれを行うことをお勧めします。次のコードは、サンプル アプリケーションからの抜粋です。
public MainWindow()
{
InitializeComponent();
//Try initializing the global instance of IdentityManager.
try
{
oIDMgr = IdentityManager.CreateInstance("Tailspin Toys;someone@tailspintoys.com;Tailspin Toys Application", "Windows Live ID Client Sample");
}
catch (WLLogOnException wlex)
{
//Check to see if FlowUrl is defined.
if (wlex.FlowUrl != null)
{
//If FlowUrl is defined, direct user to the web page to correct the error.
MessageBox.Show(wlex.ErrorString + "Please go to " + wlex.FlowUrl.AbsoluteUri + "to correct the condition that caused the error");
}
else
{
//If FlowUrl is not defined, simply display the ErrorString.
MessageBox.Show(wlex.ErrorString);
}
}
//Check the config file to see if a default user is defined.
defaultUserName = ConfigurationManager.AppSettings["defaultUserName"];
if (!String.IsNullOrEmpty(defaultUserName))
{
TrySilentSignIn();
}
else
{
//If no default user is defined, try instantiating the global Identity object instance from scratch.
try
{
oID = oIDMgr.CreateIdentity();
}
catch (WLLogOnException wlex)
{
//Check to see if FlowUrl is defined.
if (wlex.FlowUrl != null)
{
//If FlowUrl is defined, direct user to the web page to correct the error.
MessageBox.Show(wlex.ErrorString + "Please go to " + wlex.FlowUrl.AbsoluteUri + "to correct the condition that caused the error");
}
else
{
//If FlowUrl is not defined, simply display the ErrorString.
MessageBox.Show(wlex.ErrorString);
}
}
}
UpdateDisplay();
}
このコードは、MainWindow クラスが作成されるときに実行されます。まず、CreateInstance メソッドが呼び出され、IdentityManager のグローバル インスタンスを格納する変数が初期化されます。
注意
CreateInstance メソッドの呼び出し時に、2 番目のパラメータで指定されたアプリケーション名が次の図のようにサインイン ダイアログ ボックスの上部に表示されます (該当する場合)。
Windows Live ID 対応のサインイン ダイアログ ボックス
次に、既定のユーザーが指定されている場合には、そのユーザーの自動サインインが試行されます。自動サインインの詳細については、「自動サインインの実装」を参照してください。
既定のユーザーが指定されていない場合には、CreateIdentity メソッドが呼び出され、Identity を格納する変数が初期化されます。
関連項目
タスク
Windows Live ID サンプル アプリケーションの実行
概念
自動サインインの実装
個人用設定の実装
クライアント アプリケーション用 Windows Live ID のコード サンプル