적용 대상: Workforce 테넌트
외부 테넌트 (자세히 알아보기)
이 자습서에서는 네이티브 인증을 사용하여 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()
}
}
}
}
}
로그인 후 ID 토큰 클레임을 검색하려면 ID 토큰 클레임 읽기단계를 사용합니다.
로그인 오류 처리
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()
}
}
}