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.CompleteSignInContinuationState objektet. 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 inloggningen använder du stegen i Anspråk för läs-ID-token.

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