Gerenciar usuários de e-mail/senha - Java SDK
Nesta página
Depois de ativar oprovedor de e-mail/senha em seu aplicativo, você pode registrar uma nova conta, confirmar um endereço de e-mail e redefinir a senha de um usuário a partir do código do cliente .
Registrar uma nova conta de usuário
Para registrar um novo usuário, passe um e-mail e uma senha fornecidos pelo usuário para os métodos registrarUser() ou registrarUserAsync() da instância EmailPasswordAuth do Realm 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}") } }
Confirmar um endereço de e-mail de novo usuário
Para confirmar um usuário recém-criado, passe uma confirmação token
e tokenId
para os métodos confirmUser() ou confirmUserAsync() da instância EmailPasswordAuth do seu Realm 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}") } }
Dica
Para acessar token
os tokenId
valores e enviados no e-mail de confirmação do usuário, você pode usar um assunto de e-mail de confirmação personalizado contendo um link detalhado.
Redefinir a senha de um usuário
Para redefinir uma senha de usuário na sincronização, você pode:
Enviar um e-mail de redefinição de senha
Executar uma função de redefinição de senha
Selecione seu método preferido de redefinição de senha acessando:
Seu aplicativo
Authentication
Authentication Providers
Email/Password - e pressione o botão EDIT
Enviar um e-mail de redefinição de senha
Para redefinir a senha de um usuário, primeiro envie ao usuário um e-mail de redefinição de senha com sendResetPasswordEmail() ou 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") } }
Os e-mails de redefinição de senha contêm dois valores, token
e tokenId
. Para concluir o fluxo de redefinição de senha, solicite ao usuário que insira uma nova senha e passe os valores token
e tokenId
junto com o novo valor de senha para os métodos reinício da instância de EmailPasswordAuth do Realm App
} :
// 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") } }
Dica
Para acessar token
os tokenId
valores e enviados no e-mail de redefinição de senha, você pode usar um assunto de e-mail de redefinição de senha personalizado contendo um link detalhado.
Executar uma função de redefinição de senha
Ao configurar seu aplicativo para executar uma função de redefinição de senha, você definirá a função que deve ser executada ao chamar callResetPasswordFunction() ou callResetPasswordFunctionAsync() do SDK. Esta função pode receber um nome de usuário, uma senha e qualquer número de argumentos adicionais. Você pode usar esses argumentos para especificar detalhes como respostas a perguntas de segurança ou outros desafios que o usuário deve passar para concluir com êxito uma redefinição de senha.
Você pode preferir usar uma função personalizada de redefinição de senha quando quiser definir seus próprios fluxos de redefinição de senha. Por exemplo, você pode enviar um e-mail de redefinição de senha personalizado de um domínio específico ou por meio de um serviço que não seja o e-mail.
Dica
Veja também:
Para obter mais informações sobre como definir uma função de redefinição de senha personalizada em seu aplicativo, consulte: Executar uma função de redefinição de senha.
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") } }