次の方法で共有


IdentityManager.CreateIdentity メソッド (String)

指定したサインイン名から、新規の認証されていない Identity オブジェクト インスタンスを作成します。

名前空間 : Microsoft.WindowsLive.Id.Client
アセンブリ : Microsoft.WindowsLive.Id.Client (microsoft.windowslive.id.client.dll 内)

構文

'宣言

  Public Function CreateIdentity ( _
    userName As String _
) As Identity
  public Identity CreateIdentity (
    string userName
)
  public:
Identity^ CreateIdentity (
    String^ userName
)
  public Identity CreateIdentity (
    String userName
)
  public function CreateIdentity (
    userName :String
) : Identity

パラメータ

  • userName
    返される Identity オブジェクトが表すユーザーのサインイン名。

    注意

    userName が null の場合、このメソッドは CreateIdentity の既定の動作となります。

戻り値

新規の認証されていない Identity オブジェクト インスタンス。

例外

例外の種類 状態
WLLogOnException

WLLogOnException がスローされる状態の詳細については、「ErrorString」を参照してください。

解説

CreateIdentityAuthenticate および Persist と共に使用し、モーダルのサインイン ダイアログ ボックスを表示せずにユーザーを自動で認証します。サイレント認証の対象となるのは、自動でサインインするために以前に自分の資格情報を保存する選択をしたユーザーのみです。

以下の点の両方に該当する場合のみ、サイレント認証を使用できます。

  1. アプリケーションで、以前にユーザーのサインイン名を保存したことがある (通常はアプリケーションの "既定のユーザー" として保存される)。

  2. SavedCredentials == CredentialType (ユーザーは、自分のサインイン名およびパスワードをコンピュータ上に保存する選択をした。)

  3. 詳細については、「自動サインインの実装」を参照してください。

次の例は、CreateIdentity を使用して自動サインインを実装する方法を示しています。

        private void TrySilentSignIn()
        {
//config ファイルのユーザー名を使用して、グローバルの Identity オブジェクト インスタンスのインスタンス化を試行します。
try
            {
                oID = oIDMgr.CreateIdentity(defaultUserName);
            }
catch (WLLogOnException wlex)
            {
//FlowUrl が定義されているかどうかを確認します。
if (wlex.FlowUrl != null)
                {
//FlowUrl が定義されている場合、ユーザーを Web ページに誘導し、エラーを修正させます。
MessageBox.Show(wlex.ErrorString + wlex.FlowUrl.AbsoluteUri + "に移動し、エラーの原因となる状況を修正してください");
                }
else
                {
//FlowUrl が定義されていない場合は、単純に ErrorString を表示します。
MessageBox.Show(wlex.ErrorString);
                }
            }

//ユーザー名が有効かどうか検査します。
if (oID != null)
            {
//ユーザーがユーザー名およびパスワードを保存しているかどうか検査して確認します。
                if (oID.SavedCredentials == CredentialType.UserNameAndPassword)
                {
try
                    {
//サイレント認証を試行します。
                        if (oID.Authenticate(AuthenticationType.Silent))
                        {
currentUserName = defaultUserName;
                        }
else
                        {
MessageBox.Show("既定のユーザーの保存済みサインイン名およびパスワードは無効です。");
                        }
                    }
catch (WLLogOnException wlex)
                    {
//FlowUrl が定義されているかどうかを確認します。
if (wlex.FlowUrl != null)
                        {
//FlowUrl が定義されている場合、ユーザーを Web ページに誘導し、エラーを修正させます。
MessageBox.Show(wlex.ErrorString + wlex.FlowUrl.AbsoluteUri + "に移動し、エラーの原因となる状況を修正してください");
                        }
else
                        {
//FlowUrl が定義されていない場合は、単純に ErrorString を表示します。
MessageBox.Show(wlex.ErrorString);
                        }
                    }
                }
else
                {
MessageBox.Show("既定のユーザーはサインイン名およびパスワードを保存していません。");
                }
            }
else
            {
MessageBox.Show("config ファイルの defaultUserName は無効な値です。");
config.AppSettings.Settings.Remove("defaultUserName");
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
            }
        }

スレッド セーフティ

この型の public static (Visual Basic ではShared) メンバーはすべてスレッド セーフです。インスタンス メンバーの場合はスレッド セーフであるとは限りません。

プラットフォーム

開発プラットフォーム

Windows Vista、Windows XP Professional Service Pack 2 (SP2)

対象プラットフォーム

Windows Vista、Windows XP Professional SP2、Windows XP Home Edition SP2

関連項目

参照

IdentityManager クラス
IdentityManager メンバー
Microsoft.WindowsLive.Id.Client 名前空間
IdentityManager クラス
Identity クラス
GetSavedCredentials
WLLogOnException

その他のリソース

自動サインインの実装