자습서: Android 앱에 등록한 후 자동으로 사용자 로그인
이 자습서에서는 기본 인증을 사용하여 Android 앱에서 등록한 후 사용자를 자동으로 로그인하는 방법을 보여 줍니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 가입 후 로그인
- 오류 처리
필수 조건
- 샘플 네이티브 Android 모바일 애플리케이션에서 사용자 로그인 단계를 완료합니다. 이 문서에서는 테넌트 설정을 사용하여 구성하는 샘플 Android를 실행하는 방법을 보여 줍니다.
- 자습서: 기본 인증을 사용하여 Android 모바일 앱에 등록 추가 이 자습서의 단계는 메일 및 암호로 등록하든, 일회용 암호로 등록하든 관계없이 작동합니다.
등록 후 로그인
등록 흐름이 성공하면 새 로그인 흐름을 시작하지 않고도 사용자를 자동으로 로그인할 수 있습니다.
SignUpResult.Complete
는 SignInContinuationState
개체를 반환합니다. SignInContinuationState
개체는 signIn()
메서드에 대한 액세스를 제공합니다.
메일 및 암호를 사용하여 사용자를 등록한 다음, 자동으로 로그인하려면 다음 코드 조각을 사용합니다.
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()
}
}
}
}
}
로그인 후 ID 토큰 클레임을 검색하려면 ID 토큰 클레임 읽기 단계를 사용합니다.
로그인 오류 처리
SignInContinuationState.signIn()
메서드는 성공적으로 로그인한 후에 SignInResult.Complete
를 반환합니다. 오류를 반환할 수도 있습니다.
SignInContinuationState.signIn()
에서 오류를 처리하려면 다음 코드 조각을 사용합니다.
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()
}
}
}