Поделиться через


Руководство: Автоматический вход пользователя после регистрации в приложении Android

применяется к: белый круг с серым символом X. арендаторы рабочей силы зеленый круг с символом белой галочки. внешние клиенты (подробнее)

В этом руководстве показано, как автоматически войти в систему после регистрации в приложении Android с помощью собственной проверки подлинности.

В этом руководстве описано, как:

  • Войдите после регистрации.
  • Обработка ошибок.

Необходимые условия

Вход после регистрации

После успешного выполнения регистрации вы можете автоматически войти в систему пользователей, не инициируя новый поток входа.

SignUpResult.Complete возвращает объект SignInContinuationState. Объект SignInContinuationState предоставляет доступ к методу signIn(parameters).

Чтобы зарегистрировать пользователя с помощью электронной почты и пароля, а затем автоматически войти в систему, используйте следующий фрагмент кода:

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

Чтобы получить утверждения маркера идентификатора после входа, выполните действия, описанные в Чтение утверждений маркера идентификатора.

Обработка ошибок входа

Метод SignInContinuationState.signIn(parameters) возвращает SignInResult.Complete после успешного входа. Он также может возвращать ошибку.

Для обработки ошибок в SignInContinuationState.signIn(parameters)используйте следующий фрагмент кода:

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

Дальнейшие действия