Udostępnij za pośrednictwem


Samouczek: automatyczne logowanie użytkownika po zarejestrowaniu się w aplikacji dla systemu Android

W tym samouczku pokazano, jak zalogować użytkownika automatycznie po zarejestrowaniu się w aplikacji systemu Android przy użyciu uwierzytelniania natywnego.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Zaloguj się po utworzeniu konta.
  • Obsługa błędów.

Wymagania wstępne

Zaloguj się po utworzeniu konta

Po pomyślnym przepływie rejestracji możesz automatycznie logować użytkowników bez inicjowania nowego przepływu logowania.

SignInContinuationState Zwraca SignUpResult.Complete obiekt. Obiekt SignInContinuationState zapewnia dostęp do signIn() metody.

Aby zarejestrować użytkownika przy użyciu poczty e-mail i hasła, a następnie automatycznie się zalogować, użyj następującego fragmentu kodu:

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

Aby pobrać oświadczenia tokenu identyfikatora po zalogowaniu, wykonaj kroki opisane w artykule Oświadczenia tokenu identyfikatora odczytu.

Obsługa błędów logowania

Metoda SignInContinuationState.signIn() zwraca wartość SignInResult.Complete po pomyślnym zalogowaniu. Może również zwrócić błąd.

Aby obsłużyć błędy w programie SignInContinuationState.signIn(), użyj następującego fragmentu kodu:

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

Następne kroki