Compartir a través de


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

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()
        }
    }
}

Pasos siguientes