かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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

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プロパティの値をつっこめば出来ます。

知らなかった。