다음을 통해 공유


자습서: Android 앱에 등록한 후 자동으로 사용자 로그인

이 자습서에서는 기본 인증을 사용하여 Android 앱에서 등록한 후 사용자를 자동으로 로그인하는 방법을 보여 줍니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 가입 후 로그인
  • 오류 처리

필수 조건

등록 후 로그인

등록 흐름이 성공하면 새 로그인 흐름을 시작하지 않고도 사용자를 자동으로 로그인할 수 있습니다.

SignUpResult.CompleteSignInContinuationState 개체를 반환합니다. 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()
        }
    }
}

다음 단계