メール/パスワードユーザーの管理 - .NET SDK
項目一覧
Overview
アプリでメール/パスワード プロバイダーを有効にしている場合は、クライアント コードで新しいアカウントの登録、メールアドレスの確認、ユーザーのパスワードのリセットができます。
新しいユーザー アカウントの登録
新規ユーザーを登録するには、ユーザーが提供したメールとパスワードをRegisterUserAsync()メソッドに渡します。
await app.EmailPasswordAuth.RegisterUserAsync(userEmail, "sekrit");
新しいユーザーのメールアドレスの確認
新しく作成されたユーザーを確認するには、確認 token
とtokenId
をConfirmUserAsync()メソッドに渡します。
注意
モバイルアプリでのディープリンクの使用
await app.EmailPasswordAuth.ConfirmUserAsync("<token>", "<token-id>");
確認メールの再送信
確認メールを再送信するには、ユーザーのメールアドレスを指定してResendConfirmationEmailAsync()メソッドを呼び出します。
await app.EmailPasswordAuth.ResendConfirmationEmailAsync("<userEmail>");
ユーザー確認機能の再試行
カスタム関数を使用して確認メールを再送信するには、ユーザーのメールアドレスを指定してRetryCustomConfirmationAsync()メソッドを呼び出します。
await app.EmailPasswordAuth.RetryCustomConfirmationAsync("<userEmail>");
詳細については、App Services ドキュメントの「確認関数の実行」を参照してください。
ユーザーのパスワードのリセット
ユーザーのパスワードのリセットは複数段階のプロセスです。
クライアント アプリで、ユーザーがパスワードをリセットするための UI を提供します。 その後、App Services App はメールを送信するか、カスタム関数を実行してユーザーの ID を確認できます。
ユーザーの ID を確認した後、パスワード再設定リクエストを完了できます。
パスワードのリセットが完了すると、ユーザーは新しいパスワードを使用してログできます。
次の方法で、希望するパスワード リセット方法を選択します。
Atlas App Services アプリ
Authentication
Authentication Providers
Email/Password - をクリックし、 EDITボタンを押します
パスワード リセット メールの送信
ユーザーの ID を確認するためにパスワード リセット メールを送信するには、パスワード リセット メールを送信するようにアプリを設定する必要があります。
パスワード リセット プロセスを開始するには、ユーザーのメールを使用してsendPasswordResetEmailAsync()を呼び出します。 App Services は、一意の URL を含むメールをユーザーに送信します。 ユーザーは30分以内にこの URL にアクセスする必要があります。
await app.EmailPasswordAuth.SendResetPasswordEmailAsync(userEmail);
パスワード リセット メールには、 token
とtokenId
の 2 つの値でエンコードされた URL が含まれています。 パスワード リセット フローを完了するには、クライアントで、またはバックエンドでカスタム関数を呼び出してユーザーのパスワードをリセットします。 SDK を使用してパスワードのリセットを完了するには、次の値をResetPasswordAsync()に渡します。
await app.EmailPasswordAuth.ResetPasswordAsync( myNewPassword, "<token>", "<token-id>");
ユーザーが 30 分以内にパスワード リセット メールの URL にアクセスしない場合、 token
とtokenId
は期限切れになります。 パスワードのリセット プロセスを再度開始する必要があります。
注意
パスワード リセット メールで送信されたtoken
と の値にアクセスするには、tokenId
Android ディープ リンク を使用できます または iOS ユニバーサル リンク。
パスワードリセット機能の実行
パスワード リセット機能 を実行するようにアプリを構成するときは、SDK からCallResetPasswordFunctionAsync()を呼び出すときに実行する関数を定義します。 この関数は、ユーザー名、パスワード、および任意の数の追加引数を指定できます。 これらの引数を使用して、セキュリティの質問の回答やその他のチャレンジにユーザーがパスワード リセットを正常に完了するために渡す必要があるものなどの詳細を指定できます。
独自のパスワード リセット フローを定義する場合は、カスタム パスワード リセット機能を使用することをお勧めします。 たとえば、特定のドメインからカスタム パスワード リセット メールを送信できます。 メール以外のサービスを使用してユーザーの ID を確認することもできます。
Atlas App Services 側では、このメソッドを呼び出すときに実行されるカスタム パスワード リセット機能を定義します。 この関数は、次の 3 つのステータスのいずれかを返すことができます。
fail
pending
success
fail
ステータスは SDK によって例外として扱われます。 SDK CallResetPasswordFunctionAsync()
は戻り値を取らないため、クライアントにpending
またはsuccess
ステータスを返すことはありません。
サーバー側の保留中のケース
ユーザーに本人確認を行うために追加の手順を実行したい場合、 App Services のパスワード リセット関数によりpending
が返されることがあります。 ただし、その戻り値は SDK のCallResetPasswordFunctionAsync()に渡されないため、クライアントアプリはpending
ステータスを処理するために独自のロジックを実装する必要があります。
await app.EmailPasswordAuth.CallResetPasswordFunctionAsync( userEmail, myNewPassword);
サーバー側関数により、カスタム メール プロバイダーを使用してメールが送信される場合があります。 SMS などのサービスを使用してユーザーの ID を確認することもできます。
App Services のパスワード リセット関数のコンテキストで、 token
とtokenId
にアクセスできます。 App Services のパスワード リセット機能からこの情報を渡す場合、プラットフォーム固有のディープ リンクまたはユニバーサル リンクを使用してこれらの値をアプリに渡すことができます。 次に、クライアント アプリケーションはResetPasswordAsync()を呼び出してパスワード リセット フローを完了できます。
await app.EmailPasswordAuth.ResetPasswordAsync( myNewPassword, "<token>", "<token-id>");
注意
カスタム パスワード リセット機能から送信されるtoken
とtokenId
の値にアクセスするには、次の Android ディープリンク を使用できます: または iOS ユニバーサル リンク。
サーバー側の成功例
App Services のパスワード リセット関数が関数内で追加の検証を行う場合、またはパスワードのリセットを試みる前にユーザーの ID を検証した場合は、 success
を返すように App Services 関数を構成できます。 ただし、その戻り値は SDK のCallResetPasswordFunctionAsync()に渡されないため、クライアントアプリはsuccess
ステータスを処理するために独自のロジックを実装する必要があります。
この例では 関数を呼び出すと、パスワード リセット プロセス全体が実行されます。
await app.EmailPasswordAuth.CallResetPasswordFunctionAsync( userEmail, myNewPassword, "<security-question-1-answer>", "<security-question-2-answer>");