メール/パスワードユーザーの管理 - Kotlin SDK
項目一覧
Atlas App Services アプリでメール/パスワード プロバイダーを有効にすると、新しいユーザーを登録してログインすることで、クライアント コードからのユーザー認証を処理できるようになります。
新規ユーザーの登録
新規ユーザーを登録するには、ユーザーが提供したメールとパスワードをapp.emailPasswordAuth.registerUser()に渡します。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.registerUser(email, password) }
新しいユーザーのメールアドレスの確認
App Services でメール/パスワード プロバイダーを有効にするときは、確認方法を選択します。 App Services のメール/パスワード確認サービスは、メールまたはカスタム Atlas Function を通じてユーザーに取得できるトークンとトークン ID を提供します。 ユーザーを確認するには、そのトークンと tokenId をapp.emailPasswordAuth.confirmUser()に提供します。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.confirmUser(token, tokenId) }
ユーザーを確認したら、メールまたはパスワード認証情報を使用してログインに進みます。
ユーザー確認方法の再試行
SDK は、ユーザー確認のメールを再送信したり、カスタム確認方法を再試行したりする方法を提供します。
ユーザー確認メールの再送信
確認メールを再送信します。 各 URL の確認トークンは30分後に期限切れになります。 ユーザーが期間内にリンクに従って確認しない場合は、新しい確認メールをリクエストする必要があります。
ユーザー確認メールを再送信するには、 app.emailPasswordAuth.resendConfirmationEmail()にユーザーのメールアドレスを指定します。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.resendConfirmationEmail(email) }
ユーザー確認機能の再試行
カスタム ユーザー確認機能を再試行するには、 app.emailPasswordAuth.retryCustomConfirmation()にユーザーのメール アドレスを指定します。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.retryCustomConfirmation(email) }
ユーザーのパスワードのリセット
ユーザーのパスワードのリセットは複数段階のプロセスです。
クライアント アプリで、ユーザーがパスワードをリセットするための UI を提供します。 その後、App Services App はメールを送信するか、カスタム関数を実行してユーザーの ID を確認できます。
ユーザーの ID を確認した後、パスワード再設定リクエストを完了できます。
パスワードのリセットが完了すると、ユーザーは新しいパスワードを使用してログできます。
希望するパスワード リセット方法の設定方法の詳細については、 App Services メール/パスワード認証 のドキュメントを参照してください。
パスワード リセット メールの送信
ユーザーの ID を確認するためにパスワード リセット メールを送信するには、パスワード リセット メールを送信するようにアプリを設定する必要があります。
パスワード リセット プロセスを開始するには、 app.emailPasswordAuth.sendResetPasswordEmail()を呼び出します ユーザーのメールで許可されます。 App Services は、一意の URL を含むメールをユーザーに送信します。 ユーザーは30分以内にこの URL にアクセスする必要があります。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.sendResetPasswordEmail(email) }
ユーザーがパスワード リセット メールの URL を訪問した後、 app.emailPasswordAuth.resetPassword()を呼び出します ユーザーのメール、新しいパスワード、一意の URL に記載された token
とtokenId
で許可されます。
ユーザーが 30 分以内にパスワード リセット メールの URL にアクセスしない場合、 token
とtokenId
は期限切れになります。 パスワードのリセット プロセスを再度開始する必要があります。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.resetPassword(token, tokenId, newPassword) }
パスワードリセット機能の実行
パスワードリセット機能 を実行するようにアプリを構成するときに、 app.emailPasswordAuth.colResetPasswordFunction()を呼び出したときに実行する関数を定義します。 SDK からの。 この関数は、ユーザー名、パスワード、および任意の数の追加引数を指定できます。 これらの引数を使用して、セキュリティの質問の回答やその他のチャレンジにユーザーがパスワード リセットを正常に完了するために渡す必要があるものなどの詳細を指定できます。
独自のパスワード リセット フローを定義する場合は、カスタム パスワード リセット機能を使用することをお勧めします。 For example, you might send a custom password reset email from a specific domain. または、メール以外のサービスを使用してユーザーの ID を確認することもできます。
Atlas App Services 側では、このメソッドを呼び出すときに実行されるカスタム パスワード リセット機能を定義します。 この関数は、次の 3 つのステータスのいずれかを返すことができます。
fail
pending
success
fail
ステータスは SDK によってServiceException
エラーとして扱われます。 SDK callResetPasswordFunction()
はクライアントにpending
またはsuccess
ステータスを返しません。
サーバー側の保留中のケース
ユーザーに本人確認を行うために追加の手順を実行したい場合、 App Services のパスワード リセット関数によりpending
が返されることがあります。 ただし、その戻り値は SDK のcallResetPasswordFunction()
に渡されないため、クライアントアプリはpending
ステータスを処理するために独自のロジックを実装する必要があります。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.callResetPasswordFunction(email, newPassword) }
サーバー側関数により、カスタム メール プロバイダーを使用してメールが送信される場合があります。 または、SMS を使用して、テキスト メッセージでユーザーの ID を確認することもできます。
App Services パスワード リセット関数コンテキストで、 と にアクセスできます。 App Servicestoken
tokenId
のパスワード リセット機能からこの情報を渡す と、Android のディープ リンク を使用してこれらの値をアプリに渡すことができます。 iOSの または ユニバーサル リンク 。その後、クライアントアプリケーションはresetPassword()
を呼び出してパスワード リセット フローを完了できます。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interactions app.emailPasswordAuth.resetPassword(token, tokenId, newPassword) }
サーバー側の成功例
App Services のパスワード リセット関数が関数内で追加の検証を行う場合、またはパスワードのリセットを試みる前にユーザーの ID を検証した場合は、 success
を返すように App Services 関数を構成できます。 ただし、その戻り値は SDK のcallResetPasswordFunction()
に渡されないため、クライアントアプリはsuccess
ステータスを処理するために独自のロジックを実装する必要があります。
この例では 関数を呼び出すと、パスワード リセット プロセス全体が実行されます。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { // use runBlocking sparingly -- it can delay UI interaction app.emailPasswordAuth.callResetPasswordFunction(email, newPassword, args) }
ユーザーのログインまたはログアウト
ユーザーを登録したら、別の手順でユーザーをログインさせます。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { val emailPasswordCredentials = Credentials.emailPassword(email, password) val user = app.login(emailPasswordCredentials) }
認証されたユーザーをログアウトできます。
val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID runBlocking { val user = app.login(credentials) // ... work with logged-in user ... // Ensure all local updates are uploaded // before logging out user.logOut() }