Tutorial: Inicio de sesión del usuario automáticamente después de registrarse en una aplicación de Android
En este tutorial se muestra cómo iniciar sesión automáticamente el usuario después de registrarse en una aplicación Android mediante la autenticación nativa.
En este tutorial, aprenderá a:
- Iniciar sesión después del registro.
- Control de errores.
Requisitos previos
- Complete los pasos Iniciar sesión de los usuarios en una aplicación móvil Android nativa de ejemplo. En este artículo se muestra cómo ejecutar un ejemplo de Android que configure mediante la configuración del inquilino.
- Tutorial: Incorporar registro en una aplicación móvil Android mediante la autenticación nativa. Los pasos de este tutorial deben funcionar tanto si se registra con el correo electrónico como la contraseña o el código de acceso de un solo uso.
Inicio de sesión después del registro
Después de un flujo de registro correcto, puede iniciar sesión automáticamente a los usuarios sin iniciar un flujo de inicio de sesión nuevo.
Devuelve SignInContinuationState
el objeto SignUpResult.Complete
. El objeto SignInContinuationState
proporciona acceso al método signIn()
.
Para registrar un usuario con correo electrónico y contraseña, después inicie sesión automáticamente, use el siguiente fragmento de código:
CoroutineScope(Dispatchers.Main).launch {
val signUpActionResult = authClient.signUp(
username = emailAddress,
password = password
)
if (SignUpActionResult is SignUpResult.CodeRequired) {
val nextState = signUpActionResult.nextState
val submitCodeActionResult = nextState.submitCode(
code = code
)
if (submitCodeActionResult is SignUpResult.Complete) {
// Handle sign up success
val signInContinuationState = actionResult.nextState
val signInActionResult = signInContinuationState.signIn()
if (signInActionResult is SignInResult.Complete) {
// Handle sign in success
val accountState = signInActionResult.resultValue
val accessTokenResult = accountState.getAccessToken()
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}
}
}
Para recuperar notificaciones de token de identificador después del inicio de sesión, siga los pasos descritos en Notificaciones de token de id. de lectura.
Control de errores de inicio de sesión
El método SignInContinuationState.signIn()
devuelve SignInResult.Complete
después de un inicio de sesión correcto. También puede devolver un error.
Para controlar errores en SignInContinuationState.signIn()
, use el siguiente fragmento de código:
val signInContinuationState = actionResult.nextState
val signInActionResult = signInContinuationState.signIn()
when (signInActionResult) {
is SignInResult.Complete -> {
// Handle sign in success
displayAccount(accountState = actionResult.resultValue)
}
is SignInContinuationError -> {
// Handle unexpected error
}
else -> {
// Handle unexpected error
}
}
private fun displayAccount(accountState: AccountState) {
CoroutineScope(Dispatchers.Main).launch {
val accessTokenResult = accountState.getAccessToken()
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}