Android 15 베타 2부터 androidx.credentials:1.5.0-alpha01과 페어링되어 개발자는 사용자 이름 또는 비밀번호 필드와 같은 특정 뷰를 인증 관리자 요청과 연결할 수 있습니다. 사용자가 이러한 뷰 중 하나에 포커스를 맞추면 해당 요청이 인증 관리자로 전송됩니다. 결과 사용자 인증 정보는 여러 제공업체에서 집계되어 키보드 인라인 추천이나 드롭다운 추천과 같은 자동 완성 UI에 표시됩니다. 이 기능은 사용자가 실수로 인증 관리자 계정 선택 도구를 닫은 다음 관련 입력란을 탭할 때 대체 수단으로 사용할 수 있습니다.
Jetpack androidx.credentials 라이브러리는 개발자가 이 기능에 사용하는 것이 좋습니다.
그림 1: 비밀번호, 패스키, Google 계정으로 로그인을 사용하여 사용자 인증 정보로 자동 완성 결과
구현
인증 관리자를 사용하여 자동 완성 결과에 사용자 인증 정보를 표시하려면 표준 구현을 사용하여 GetCredentialRequest
를 빌드한 다음 관련 뷰에 설정하세요. 다음 예와 같이 응답이 getCredential
API 호출에서 가져온 것인지 PendingGetCredentialRequest
에서 가져온 것인지와 관계없이 응답 처리는 동일합니다.
먼저 GetCredentialRequest
를 생성합니다.
Kotlin
// 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) )
자바
// Retrieves the user's saved password for your app. GetPasswordOption getPasswordOption = new GetPasswordOption(); // Get a passkey from the user's public key credential provider. GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(requestJson); GetCredentialRequest getCredRequest = new GetCredentialRequest( Arrays.asList(getPasswordOption, getPublicKeyCredentialOption) );
그런 다음 getCredential
API를 호출합니다. 그러면 인증 관리자 선택기가 표시됩니다.
Kotlin
coroutineScope.launch { try { val result = credentialManager.getCredential( context = activityContext, // Use an activity-based context. request = getCredRequest ) handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } }
자바
coroutineScope.launch(new CoroutineScopeRunnable() { @Override public void run(@NonNull CoroutineScope scope) { try { GetCredentialResponse result = credentialManager.getCredential( activityContext, // Use an activity-based context. getCredRequest ); handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } } });
마지막으로 자동 완성 환경을 사용 설정합니다. getCredRequest
를 관련 뷰 (예: username, password
)로 설정하여 사용자가 이러한 뷰와 상호작용할 때 자동 완성에서 사용자 인증 정보 결과를 사용 설정합니다.
Kotlin
import androidx.credentials.PendingGetCredentialRequest usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) } passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) }
Java
import androidx.credentials.CredentialManagerViewHandler; import androidx.credentials.PendingGetCredentialRequest; CredentialManagerViewHandler.setPendingGetCredentialRequest( usernameEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } ) CredentialManagerViewHandler.setPendingGetCredentialRequest( passwordEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } )