자동 완성과 인증 관리자 통합

Android 15 베타 2부터 androidx.credentials:1.5.0-alpha01과 함께 개발자는 사용자 이름 또는 비밀번호 필드와 같은 특정 뷰를 인증 관리자 요청과 연결할 수 있습니다. 사용자가 이러한 뷰 중 하나에 포커스를 맞추면 해당 요청이 인증 관리자로 전송됩니다. 결과 사용자 인증 정보는 제공업체 전반에서 집계되고 키보드 인라인 추천이나 드롭다운 추천과 같은 자동 완성 UI에 표시됩니다. 이 기능은 사용자가 실수로 인증 관리자 계정 선택기를 닫은 후 관련 필드를 탭할 때 대체 기능으로 사용할 수 있습니다.

Jetpack androidx.credentials 라이브러리는 개발자가 이 기능에 사용하는 기본 엔드포인트입니다.

자동 완성 결과에 사용자 인증 정보를 보여주는 그림
그림 1: 비밀번호, 패스키, Google 계정으로 로그인을 사용하여 사용자 인증 정보로 자동 완성한 결과

구현

인증 관리자를 사용하여 자동 완성 결과에 사용자 인증 정보를 표시하려면 표준 구현을 사용하여 GetCredentialRequest를 빌드한 후 관련 뷰에 설정합니다. 다음 예시와 같이 응답이 getCredential API 호출에서 오든 PendingGetCredentialRequest에서 오든 응답 처리는 동일합니다.

먼저 GetCredentialRequest를 구성합니다.

// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()

// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
    requestJson = requestJson
)

val getCredRequest = GetCredentialRequest(
    listOf(getPasswordOption, getPublicKeyCredentialOption)
)

다음으로 getCredential API를 호출합니다. 그러면 인증 관리자 선택기가 표시됩니다.

coroutineScope {
    try {
        val result = credentialManager.getCredential(
            context = activityContext, // Use an activity-based context.
            request = getCredRequest
        )
        handleSignIn(result)
    } catch (e: GetCredentialException) {
        handleFailure(e)
    }
}

마지막으로 자동 완성 환경을 사용 설정합니다. 사용자가 이러한 뷰와 상호작용할 때 자동 완성에서 사용자 인증 정보 결과를 사용 설정하려면 getCredRequest를 관련 뷰 (예: username, password)로 설정합니다.

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest
) { response ->
    handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest
) { response ->
    handleSignIn(response)
}