Dela via


Självstudie: Logga in användare automatiskt efter registrering i en Android-app

Den här självstudien visar hur du loggar in användare automatiskt efter registrering i en Android-app med inbyggd autentisering.

I den här självstudien lär du dig att:

  • Logga in efter registreringen.
  • Hantera fel.

Förutsättningar

Logga in efter registreringen

Efter ett lyckat registreringsflöde kan du automatiskt logga in dina användare utan att initiera ett nytt inloggningsflöde.

Returnerar SignUpResult.Complete SignInContinuationState objektet. Objektet SignInContinuationState ger åtkomst till signIn() metoden.

Om du vill registrera en användare med e-post och lösenord och sedan automatiskt logga in dem använder du följande kodfragment:

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

Om du vill hämta ID-tokenanspråk efter inloggningen använder du stegen i Anspråk för läs-ID-token.

Hantera inloggningsfel

Metoden SignInContinuationState.signIn() returnerar SignInResult.Complete efter en lyckad inloggning. Det kan också returnera ett fel.

Om du vill hantera fel i SignInContinuationState.signIn()använder du följande kodfragment:

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

Nästa steg