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

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