Tutorial: Adicionar inscrição em um aplicativo móvel Android usando autenticação nativa
Este tutorial demonstra como inscrever um usuário usando senha única de e-mail ou nome de usuário (e-mail) e senha, e coletar atributos de usuário em seu aplicativo móvel Android usando autenticação nativa.
Neste tutorial, irá aprender a:
- Inscreva um usuário usando e-mail, senha única ou nome de usuário (e-mail) e senha.
- Colete atributos de usuário durante a inscrição.
- Lidar com erros de inscrição.
Pré-requisitos
- Conclua as etapas no artigo Tutorial: Preparar seu aplicativo Android para autenticação nativa.
- Se você quiser coletar atributos de usuário durante a inscrição, configure os atributos de usuário ao criar seu fluxo de usuário de inscrição e entrada.
Inscrever um utilizador
Para inscrever um usuário usando a senha única de e-mail ou nome de usuário (e-mail) e senha, você coleta um e-mail do usuário e, em seguida, envia um e-mail contendo uma senha única de e-mail para o usuário. O usuário insere uma senha única de e-mail válida para validar seu nome de usuário.
Para inscrever um usuário, você precisa:
Crie uma interface do usuário (UI) para:
- Colete um e-mail do usuário. Adicione validação às suas entradas para garantir que o usuário insira um endereço de e-mail válido.
- Colete uma senha se você se inscrever com nome de usuário (e-mail) e senha.
- Colete uma senha única de e-mail do usuário.
- Se necessário, colete atributos de usuário.
- Reenvie uma senha única (recomendado).
- Inicie o fluxo de inscrição.
Em seu aplicativo, adicione um botão, cujo evento select dispara o seguinte trecho de código:
CoroutineScope(Dispatchers.Main).launch { val actionResult = authClient.signUp( username = emailAddress //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpResult.CodeRequired) { val nextState = actionResult.nextState val submitCodeActionResult = nextState.submitCode( code = code ) if (submitCodeActionResult is SignUpResult.Complete) { // Handle sign up success } } }
- Use o método
signUp(username)
de instância do SDK para iniciar o fluxo de inscrição.- Para se inscrever usando nome de usuário (endereço de e-mail) e senha, passe seu parâmetro de senha para a
signUp
função,signUp(username, password)
.
- Para se inscrever usando nome de usuário (endereço de e-mail) e senha, passe seu parâmetro de senha para a
- O parâmetro do método,
username
, é então o endereço de e-mail que você coleta do usuário. - No cenário mais comum, o
signUp(username)
ousignUp(username, password)
retorna um resultado,SignUpResult.CodeRequired
que indica que o SDK espera que o aplicativo envie a senha de e-mail enviada uma única vez para o endereço de e-mail do usuário. - O
SignUpResult.CodeRequired
objeto contém uma nova referência de estado, que podemos recuperar através doactionResult.nextState
. - O novo Estado dá-nos acesso a dois novos métodos:
submitCode()
Envia a senha única de e-mail que o aplicativo coleta do usuário.resendCode()
Reenvia o código de acesso único do e-mail se o usuário não receber o código.
- O
submitCode()
retornaSignUpResult.Complete
, que indica que o fluxo está concluído e o usuário foi inscrito. - O
signUp(username)
ousignUp(username, password)
também pode retornarSignUpError
para indicar que ocorreu um erro.
- Use o método
Coletar atributos de usuário durante a inscrição
Se você inscrever um usuário usando senha única de e-mail ou nome de usuário (e-mail) e senha, você pode coletar atributos de usuário antes que a conta de um usuário seja criada:
O
signUp()
método aceita umattributes
parâmetro, comosignUp(username, attributes)
:CoroutineScope(Dispatchers.Main).launch { val actionResult = authClient.signUp( username = emailAddress, attributes = userAttributes //password = password, Pass 'password' param if you sign up with username (email) and password ) //... }
O SDK do Android fornece uma classe
UserAttribute.Builder
de utilitário que você usa para criar atributos de usuário. Por exemplo, para enviar atributos de usuário de cidade e país , use o seguinte trecho de código para criar auserAttributes
variável:val userAttributes = UserAttributes.Builder () .country(country) .city(city) .build()
Os nomes de
UserAttribute.Builder
método na classe são iguais aos nomes programáveis dos atributos de usuário que eles criam. Saiba mais sobre o construtor de atributos do SDK do Android.O
signUp(username, attributes)
método orsignUp(username, attributes, password)
pode retornarSignUpResult.AttributesRequired
para indicar que o aplicativo precisa enviar um ou mais atributos necessários antes que o Microsoft Entra crie uma conta. Esses atributos são configurados pelo administrador como obrigatórios no centro de administração do Microsoft Entra. O Microsoft Entra não solicita explicitamente atributos de usuário opcionais.O
SignUpResult.AttributesRequired
resultado contém umrequiredAttributes
parâmetro.requiredAttributes
é uma lista de objetos que contém detalhes sobre os atributos deRequiredUserAttribute
usuário que o aplicativo precisa enviar. Para manipularactionResult is SignUpResult.AttributesRequired
, use o seguinte trecho de código:val actionResult = authClient.signUp( username = email, attributes = attributes //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpResult.AttributesRequired) { val requiredAttributes = actionResult.requiredAttributes // Handle "attributes required" result val nextState = actionResult.nextState nextState.submitAttributes( attributes = moreAttributes ) }
Lidar com erros de inscrição
Durante a inscrição, nem todas as ações são bem-sucedidas. Por exemplo, o usuário pode tentar se inscrever com um endereço de e-mail já usado ou enviar uma senha única de e-mail inválida.
Manipular erro de inscrição de início
Para manipular erros para o signUp()
método, use o seguinte trecho de código:
val actionResult = authClient.signUp(
username = email
)
if (actionResult is SignUpResult.CodeRequired) {
// Next step: submit code
} else if (actionResult is SignUpError) {
when {
actionResult.isUserAlreadyExists() -> {
// Handle "user already exists" error
}
else -> {
// Handle other errors
}
}
}
signUp(username, attributes)
ousignUp(username, password, attributes)
pode voltarSignUpError
.SignUpError
indica um resultado de ação malsucedido retornado porsignUp()
e não incluirá uma referência ao novo estado.Se
actionResult is SignUpError
o MSAL Android SDK fornecer métodos de utilidade para permitir que você analise ainda mais os erros específicos:- O método
isUserAlreadyExists()
verifica se o nome de usuário já foi usado para criar uma conta. isInvalidAttributes()
Verifica se um ou mais atributos enviados pelo aplicativo falharam na validação, como tipo de dados errado. Ele contém uminvalidAttributes
parâmetro, que é uma lista de todos os atributos que os aplicativos enviaram, mas falharam na validação.isInvalidPassword()
Verifique se a senha é inválida, por exemplo, quando a senha não atende a todos os requisitos de complexidade de senha. Saiba mais sobre as políticas de senha do Microsoft EntraisInvalidUsername()
Verifique se o nome de usuário é inválido, como quando o e-mail do usuário é inválido.isBrowserRequired()
Verifica a necessidade de um navegador (web fallback), para concluir o fluxo de autenticação. Esse cenário acontece quando a autenticação nativa não é suficiente para concluir o fluxo de autenticação. Por exemplo, um administrador configura o e-mail e a senha como o método de autenticação, mas o aplicativo não envia a senha como um tipo de desafio ou simplesmente não a suporta. Use as etapas em Suporte ao fallback da Web no aplicativo Android para lidar com o cenário quando isso acontecer.isAuthNotSupported()
verifica se o aplicativo envia um tipo de desafio que o Microsoft Entra não suporta, que é um valor de tipo de desafio diferente de oob ou senha. Saiba mais sobre os tipos de desafio.
Notifique o usuário de que o email já está em uso ou que alguns atributos são inválidos usando uma mensagem amigável na interface do usuário do aplicativo.
- O método
Para manipular o erro de atributos inválidos, use o seguinte trecho de código:
val actionResult = authClient.signUp( username = email, attributes = attributes //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpError && actionResult.isInvalidAttributes()) { val invalidAttributes = actionResult.invalidAttributes // Handle "invalid attributes" error, this time submit valid attributes authClient.signUp( username = emailAddress, attributes = resubmittedAttributes //password = password, Pass 'password' param if you sign up with username (email) and password ) } //...
Lidar com o erro de senha única de envio de e-mail
Para manipular erros para o submitCode()
método, use o seguinte trecho de código:
val submitCodeActionResult = nextState.submitCode(
code = code
)
if (submitCodeActionResult is SignUpResult.Complete) {
// Sign up flow complete, handle success state.
} else if (submitCodeActionResult is SubmitCodeError) {
// Handle errors under SubmitCodeError
when {
submitCodeActionResult.isInvalidCode() -> {
// Handle "code invalid" error
}
else -> {
// Handle other errors
}
}
}
submitCode()
pode voltarSubmitCodeError
.Use o
isInvalidCode()
método para verificar o erro específico, como, por exemplo, o código enviado é inválido. Nesse caso, a referência de estado anterior deve ser usada para executar novamente a ação.Para recuperar uma nova senha única de e-mail, use o seguinte trecho de código:
val submitCodeActionResult = nextState.submitCode( code = code ) if (submitCodeActionResult is SubmitCodeError && submitCodeActionResult.isInvalidCode()) { // Inform the user that the submitted code was incorrect or invalid and ask for a new code to be supplied val newCode = retrieveNewCode() nextState.submitCode( code = newCode ) }
Certifique-se de incluir as instruções de importação. O Android Studio deve incluir as instruções de importação para você automaticamente.
Você concluiu todas as etapas necessárias para inscrever um usuário em seu aplicativo com sucesso. Crie e execute seu aplicativo. Se tudo bem, você deve ser capaz de inscrever com sucesso o usuário usando e-mail senha única ou e-mail e senha.
Opcional: Entrar após um fluxo de inscrição
Após um fluxo de inscrição bem-sucedido, você pode entrar em um usuário sem iniciar um fluxo de entrada. Saiba mais no artigo Tutorial: Entrar no usuário após se inscrever no Android .
Próximos passos
Tutorial: Adicione login e logout com senha única de e-mail no aplicativo Android.