Kimlik Bilgisi Yöneticisi'ni otomatik doldurma özelliğiyle entegre etme

Android 15 Beta 2'den itibaren, androidx.credentials:1.5.0-alpha01 ile birlikte geliştiriciler kullanıcı adı veya şifre alanları gibi belirli görünümleri Kimlik Bilgisi Yöneticisi istekleriyle bağlayabilir. Kullanıcı bu görünümlerden birine odaklanırsa ilgili istek Kimlik Bilgisi'ne gönderilir Yönetici'yi seçin. Elde edilen kimlik bilgileri sağlayıcılar arasında toplanır ve klavye satır içi önerileri veya açılır liste önerileri gibi otomatik doldurma kullanıcı arayüzlerinde gösterilir. Bu özellik, kullanıcılar kimlik bilgisi yöneticisi hesap seçicisini yanlışlıkla kapatıp ilgili alanlara dokunduğunda yedek olarak kullanılabilir.

Jetpack androidx.credentials kitaplığı, geliştiricilerin kullanımına sunduk.


Otomatik doldurma sonuçlarındaki kimlik bilgilerini gösteren görsel Şekil 1: Sonuçları şifre, geçiş anahtarı ve kimlik bilgileriyle otomatik olarak doldurma Google ile oturum açın.

Uygulama

Kimlik bilgilerini otomatik doldurma sonuçlarında göstermek üzere Kimlik Bilgisi Yöneticisi'ni kullanmak için şunu kullanın: bir GetCredentialRequest oluşturmak ve ardından ayarlamak için standart uygulama alakalı görünümler sunar. Yanıtın getCredential API çağrısından mı yoksa PendingGetCredentialRequest'ten mi geldiğine bakılmaksızın yanıt işleme aynıdır (aşağıdaki örnekte gösterildiği gibi).

İlk olarak bir GetCredentialRequest oluşturun:

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

Java

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

Ardından getCredential API'yi çağırın. Kimlik Bilgisi Yöneticisi seçicisi gösterilir.

Kotlin

coroutineScope.launch {
    try {
        val result = credentialManager.getCredential(
            context = activityContext, // Use an activity-based context.
            request = getCredRequest
        )
        handleSignIn(result);
    } catch (GetCredentialException e) {
        handleFailure(e);
    }
}

Java

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

Son olarak, otomatik doldurma deneyimini etkinleştirin. getCredRequest değerini uygun olarak ayarlayın görünümlerini (ör. username, password) otomatik doldurmada kimlik bilgisi sonuçlarını etkinleştirmek için Kullanıcı bu görüntülemelerle etkileşimde bulunduğunda.

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