Condividi tramite


Esercitazione: Accedere automaticamente all'utente dopo l'iscrizione a un'app Android

Questa esercitazione illustra come accedere automaticamente all'utente dopo l'iscrizione in un'app Android usando l'autenticazione nativa.

In questa esercitazione apprenderai a:

  • Consentire a un utente di accedere dopo l'iscrizione.
  • Gestire gli errori.

Prerequisiti

Consentire l'accesso dopo l'iscrizione

Dopo un flusso di iscrizione riuscito, è possibile accedere automaticamente agli utenti senza avviare un nuovo flusso di accesso.

Oggetto SignUpResult.Complete restituito SignInContinuationState . L'oggetto fornisce l'accesso SignInContinuationState al signIn() metodo .

Per registrare un utente con posta elettronica e password, quindi accedervi automaticamente, usare il frammento di codice seguente:

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

Per recuperare le attestazioni del token ID dopo l'accesso, seguire la procedura descritta in Attestazioni del token ID di lettura.

Gestire gli errori di accesso

Il SignInContinuationState.signIn() metodo restituisce SignInResult.Complete dopo un accesso riuscito. Può anche restituire un errore.

Per gestire gli errori in SignInContinuationState.signIn(), usare il frammento di codice seguente:

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

Passaggi successivi