Dela via


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

Gäller för: Grön cirkel med en vit bockmarkeringssymbol som anger att följande innehåll gäller för externa klienter. Externa klienter (läs mer)

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 handledningen kommer du att:

  • Logga in efter registreringen.
  • Hantera felhantering.

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.

SignUpResult.Complete returnerar SignInContinuationState objekt. Objektet SignInContinuationState ger åtkomst till signIn(parameters)-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 parameters = NativeAuthSignUpParameters(username = email)
    parameters.password = password
    val actionResult: SignUpResult = authClient.signUp(parameters)

    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 parameters = NativeAuthSignInContinuationParameters()
            val signInActionResult = signInContinuationState.signIn(parameters)

            if (signInActionResult is SignInResult.Complete) { 
                // Handle sign in success
                val accountState = signInActionResult.resultValue

                val getAccessTokenParameters = NativeAuthGetAccessTokenParameters()
                val accessTokenResult = accountState.getAccessToken(getAccessTokenParameters)

                if (accessTokenResult is GetAccessTokenResult.Complete) {
                    val accessToken = accessTokenResult.resultValue.accessToken
                    val idToken = accountState.getIdToken()
                }
            } 
        } 
    } 
}

Om du vill hämta ID-tokenanspråk efter inloggning använder du stegen i läs ID-tokenanspråk.

Hantera inloggningsfel

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

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

val parameters = NativeAuthSignInContinuationParameters()
val signInActionResult = signInContinuationState.signIn(parameters)

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 getAccessTokenParameters = NativeAuthGetAccessTokenParameters()
        val accessTokenResult = accountState.getAccessToken(getAccessTokenParameters)
        if (accessTokenResult is GetAccessTokenResult.Complete) {
            val accessToken = accessTokenResult.resultValue.accessToken
            val idToken = accountState.getIdToken()
        }
    }
}

Nästa steg