かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ログインダイアログを出したい

Windows ストア アプリでログインダイアログ出したい!ってときに使えるクラス。

CredentialPicker Class

使い方は結構簡単でした。

var option = new CredentialPickerOptions
{
    AuthenticationProtocol = Windows.Security.Credentials.UI.AuthenticationProtocol.Basic,
    Message = "Message Text",
    Caption = "Caption Text",
    TargetName = "オレオレ",
    CredentialSaveOption = CredentialSaveOption.Selected,
};
var p = await CredentialPicker.PickAsync(option);
// ユーザー名をパスワードを取得
Debug.WriteLine(p.CredentialUserName);
Debug.WriteLine(p.CredentialPassword);

AuthenticationProtocolは、いろんなものが設定できますが、ここではパスワードをそのまま取得できるBasicを指定してます。私は、そこらへん明るくないのですが、色んな値が設定できるので用途に応じて好きにできそう

AuthenticationProtocol Enumeration

出てくるログイン画面はそっけないものですが独自に作りこむよりはOSになじんでいいかも。

f:id:okazuki:20130911214240p:plain

PickAsyncの戻り値の、Credentialプロパティで入力された"不透明な資格情報"が取得できます。

CredentialPickerResults.Credential credential Property.aspx) 不透明な資格情報が何をさしているのかわかりませんが、こいつを記憶しておくことで再度ログインダイアログを出すときに資格情報をあらかじめ入力された状態にすることができます。 IBuffer型なので、AsStreamメソッドを使ってストリームに変換してどこかに書き出しておいてもいいですし、お好きにできます。

ログイン画面にあらかじめ資格情報が入った状態にするには、CredentialPickerOptionsのPreviousCredentialに、上記のCredentialPickerResults.Credentialプロパティの値をつっこめば出来ます。

知らなかった。