Руководство: Автоматический вход пользователя после регистрации в приложении Android
применяется к: арендаторы рабочей силы
внешние клиенты (подробнее)
В этом руководстве показано, как автоматически войти в систему после регистрации в приложении Android с помощью собственной проверки подлинности.
В этом руководстве описано, как:
- Войдите после регистрации.
- Обработка ошибок.
Необходимые условия
- Выполните шаги для входа пользователей в образец нативного мобильного приложения Android. В этой статье показано, как запустить пример Android, настроенный с помощью параметров клиента.
- Руководство: добавление регистрации в мобильное приложение 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()
}
}
}