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

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