क्रेडेंशियल मैनेजर को ऑटोमैटिक भरने की सुविधा के साथ इंटिग्रेट करें

Android 15 के बीटा 2 वर्शन के साथ androidx.credentials:1.5.0-alpha01 का इस्तेमाल करके, डेवलपर उपयोगकर्ता नाम या पासवर्ड फ़ील्ड जैसे खास व्यू को क्रेडेंशियल मैनेजर के अनुरोधों से लिंक कर सकते हैं. जब उपयोगकर्ता इनमें से किसी एक व्यू पर फ़ोकस करता है, तो उससे जुड़ा अनुरोध क्रेडेंशियल मैनेजर को भेजा जाता है. इस प्रोसेस के बाद, सभी सेवा देने वाली कंपनियों के क्रेडेंशियल इकट्ठा कर लिए जाते हैं. साथ ही, इन्हें ऑटोमैटिक भरने वाले यूज़र इंटरफ़ेस (यूआई) में दिखाया जाता है. जैसे, कीबोर्ड इनलाइन सुझाव या ड्रॉप-डाउन सुझाव. इस सुविधा का इस्तेमाल, फ़ॉलबैक के तौर पर किया जा सकता है. ऐसा तब होता है, जब उपयोगकर्ता गलती से क्रेडेंशियल मैनेजर खाता चुनने वाले टूल को खारिज कर देते हैं और फिर काम के फ़ील्ड पर टैप करते हैं.

डेवलपर के लिए, इस सुविधा का इस्तेमाल करने के लिए Jetpack androidx.credentials लाइब्रेरी का इस्तेमाल करना सबसे बेहतर होता है.

ऑटोमैटिक भरने की सुविधा के नतीजों में क्रेडेंशियल दिखाने वाला इलस्ट्रेशन
पहली इमेज: पासवर्ड, पासकी, और 'Google से साइन इन करें' सुविधा का इस्तेमाल करके, क्रेडेंशियल के साथ ऑटोमैटिक भरने की सुविधा के नतीजे.

लागू करना

ऑटोमैटिक भरने की सुविधा के नतीजों में क्रेडेंशियल दिखाने के लिए, क्रेडेंशियल मैनेजर का इस्तेमाल करें. इसके लिए, GetCredentialRequest बनाने के लिए स्टैंडर्ड तरीके का इस्तेमाल करें. इसके बाद, इसे काम के व्यू पर सेट करें. रिस्पॉन्स मैनेज करने का तरीका एक ही होता है, फिर चाहे रिस्पॉन्स getCredential एपीआई कॉल से मिले या 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)
)

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

इसके बाद, getCredential एपीआई को कॉल करें. इससे क्रेडेंशियल मैनेजर सिलेक्टर दिखता है.

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

आखिर में, ऑटोमैटिक भरने की सुविधा चालू करें. 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;
                       }
               )