電子メール/パスワードユーザーの管理 - Java SDK
アプリでメール/パスワード プロバイダーを有効にしている場合は、クライアント コードから新しいアカウントを登録し、メールアドレスを確認し、ユーザーのパスワードをリセットできます。
新しいユーザー アカウントの登録
新規ユーザーを登録するには、ユーザーが提供したメールとパスワードを、Realm の EmailPasswordAuth インスタンスの registerUser () メソッドまたは registerUserAsync()App
メソッドに渡します。
app.getEmailPassword().registerUserAsync(email, password, it -> { if (it.isSuccess()) { Log.i("EXAMPLE", "Successfully registered user."); } else { Log.e("EXAMPLE", "Failed to register user: " + it.getError().getErrorMessage()); } });
app.emailPassword.registerUserAsync(email, password) { if (it.isSuccess) { Log.i("EXAMPLE","Successfully registered user.") } else { Log.e("EXAMPLE","Failed to register user: ${it.error}") } }
新しいユーザーのメールアドレスの確認
新しく作成されたユーザーを確認するには、Realm の EmailPasswordAuth インスタンスのconfirmUser ( ) メソッドまたは confirmUserAsync()token
tokenId
メソッドに確認 とApp
を渡します。
// token and tokenId are query parameters in the confirmation // link sent in the confirmation email. app.getEmailPassword().confirmUserAsync(token, tokenId, it -> { if (it.isSuccess()) { Log.i("EXAMPLE", "Successfully confirmed new user."); } else { Log.e("EXAMPLE", "Failed to confirm user: " + it.getError().getErrorMessage()); } });
// token and tokenId are query parameters in the confirmation // link sent in the confirmation email. app.emailPassword.confirmUserAsync(token, tokenId) { if (it.isSuccess) { Log.i("EXAMPLE", "Successfully confirmed new user.") } else { Log.e("EXAMPLE", "Failed to register user: ${it.error}") } }
Tip
ユーザー確認メールで送信される token
と の値にアクセスするには、tokenId
ディープ リンク を含む カスタム確認メールの件名 を使用できます。
ユーザーのパスワードのリセット
同期 でユーザーのパスワードをリセットするには、次のいずれかの方法を実行します。
パスワード リセット メールの送信
パスワードリセット機能の実行
次の方法で、希望するパスワード リセット方法を選択します。
アプリ
Authentication
Authentication Providers
Email/Password - をクリックし、 EDITボタンを押します
パスワード リセット メールの送信
ユーザーのパスワードをリセットするには、まずsendResetPasswordEmail()またはsendResetPasswordEmailAsync()を使用してユーザーにパスワード リセットのメールを送信します。
app.getEmailPassword().sendResetPasswordEmailAsync(email, it -> { if (it.isSuccess()) { Log.i("EXAMPLE", "Successfully sent the user a reset password link to " + email); } else { Log.e("EXAMPLE", "Failed to send the user a reset password link to " + email + ": " + it.getError().getErrorMessage()); } });
app.emailPassword.sendResetPasswordEmailAsync(email) { if (it.isSuccess) { Log.i("EXAMPLE", "Successfully sent the user a reset password link to $email") } else { Log.e("EXAMPLE", "Failed to send the user a reset password link to $email: $it.error") } }
パスワード リセット メールには、 token
とtokenId
の 2 つの値が含まれています。 パスワードのリセット フローを完了するには、ユーザーに新しいパスワードの入力を求め、 token
とtokenId
の値とともに新しいパスワードの値を Realm App
のEmailPasswordAuthインスタンスのdeletePassword () メソッドまたはreplacePasswordAsync()メソッドに渡します。 :
// token and tokenId are query parameters in the confirmation // link sent in the password reset email. app.getEmailPassword().resetPasswordAsync(token, tokenId, newPassword, it -> { if (it.isSuccess()) { Log.i("EXAMPLE", "Successfully updated password for user."); } else { Log.e("EXAMPLE", "Failed to reset user's password: " + it.getError().getErrorMessage()); } });
// token and tokenId are query parameters in the confirmation // link sent in the password reset email. app.emailPassword.resetPasswordAsync(token, tokenId, newPassword) { if (it.isSuccess) { Log.i("EXAMPLE", "Successfully updated password for user.") } else { Log.e("EXAMPLE", "Failed to reset user's password: $it.error") } }
Tip
パスワード リセット メールで送信されるtoken
と の値にアクセスするには、tokenId
ディープ リンク を含む カスタム パスワード リセット メールの件名 を使用できます。
パスワードリセット機能の実行
パスワード リセット機能 を実行するようにアプリを構成するときに、SDK から CallResetPasswordFunction ()またはCallResetPasswordFunctionAsync( ) を呼び出すときに実行する関数を定義します。 この関数は、ユーザー名、パスワード、および任意の数の追加引数を指定できます。 これらの引数を使用して、セキュリティの質問の回答やその他のチャレンジにユーザーがパスワード リセットを正常に完了するために渡す必要があるものなどの詳細を指定できます。
独自のパスワード リセット フローを定義する場合は、カスタム パスワード リセット機能を使用することをお勧めします。 たとえば、特定のドメインからやメール以外のサービスを通じてカスタム パスワード リセット メールを送信できます。
String newPassword = "newFakePassword"; String[] args = {"security answer 1", "security answer 2"}; app.getEmailPassword().callResetPasswordFunctionAsync(email, newPassword, args, it -> { if (it.isSuccess()) { Log.i("EXAMPLE", "Successfully reset the password for" + email); } else { Log.e("EXAMPLE", "Failed to reset the password for" + email + ": " + it.getError().getErrorMessage()); } });
val newPassword = "newFakePassword" val args = arrayOf("security answer 1", "security answer 2") app.emailPassword.callResetPasswordFunctionAsync(email, newPassword, args) { if (it.isSuccess) { Log.i("EXAMPLE", "Successfully reset the password for $email") } else { Log.e("EXAMPLE", "Failed to reset the password for $email: $it.error") } }