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

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)
}