Android 15 베타 2부터 androidx.credentials:1.5.0-alpha01과 페어링하면 개발자가 사용자 이름이나 비밀번호 필드와 같은 특정 뷰를 Credential Manager 요청과 연결할 수 있습니다. 사용자가 이러한 뷰 중 하나에 포커스를 두면 해당 요청이 인증 관리자로 전송됩니다. 결과 사용자 인증 정보는 제공업체 전반에서 집계되고 키보드 인라인 추천이나 드롭다운 추천과 같은 자동 완성 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)
}