किसी उपयोगकर्ता के क्रेडेंशियल सेव करना

उपयोगकर्ताओं के साइन इन करने, खाते बनाने या पासवर्ड बदलने के बाद, उन्हें अपने क्रेडेंशियल सेव करने की अनुमति दें, ताकि आने वाले समय में आपके ऐप्लिकेशन में पुष्टि करने की प्रक्रिया को ऑटोमेट किया जा सके.

शुरू करने से पहले

Android Studio प्रोजेक्ट को कॉन्फ़िगर करना.

स्टोर के क्रेडेंशियल

ऐसा Credential ऑब्जेक्ट बनाएं जिसमें उपयोगकर्ता की साइन इन करने की जानकारी हो. उदाहरण के लिए, अपने पासवर्ड से साइन इन करने के बाद उपयोगकर्ताओं को अपने क्रेडेंशियल सेव करने की अनुमति देने के लिए:

Credential credential = new Credential.Builder(email)
        .setPassword(password)  // Important: only store passwords in this field.
                                // Android autofill uses this value to complete
                                // sign-in forms, so repurposing this field will
                                // likely cause errors.
        .build();

या, उदाहरण के लिए, उपयोगकर्ताओं के अपने Google खाते से साइन इन करने के बाद:

GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
        .setAccountType(IdentityProviders.GOOGLE)
        .setName(gsa.getDisplayName())
        .setProfilePictureUri(gsa.getPhotoUrl())
        .build();

Smart Lock सेव करने का डायलॉग बॉक्स

इसके बाद, उपयोगकर्ताओं के क्रेडेंशियल सेव करने के लिए, CredentialsClient.save() को कॉल करें. अगर CredentialsClient.save() पर कॉल तुरंत नहीं होता है, तो क्रेडेंशियल नए हो सकते हैं. ऐसे में उपयोगकर्ता को सेव करने के अनुरोध की पुष्टि करनी होगी. उपयोगकर्ता से पुष्टि करने के लिए, ResolvableApiException को startResolutionForResult() के साथ रिज़ॉल्व करें.

अगर उपयोगकर्ता क्रेडेंशियल सेव नहीं करने का विकल्प चुनता है, तो उसे ऐप्लिकेशन के लिए किसी भी खाते के क्रेडेंशियल सेव करने के लिए दोबारा नहीं कहा जाएगा. अगर उपयोगकर्ता के ऑप्ट आउट करने के बाद CredentialsClient.save() को कॉल किया जाता है, तो नतीजे में CANCELED का स्टेटस कोड दिखेगा. उपयोगकर्ता बाद में, 'पासवर्ड के लिए Smart Lock' सेक्शन में, Google सेटिंग ऐप्लिकेशन में जाकर ऑप्ट इन कर सकता है. उपयोगकर्ता को सभी खातों के लिए, क्रेडेंशियल सेव करने की सुविधा चालू करनी होगी, ताकि अगली बार उसे सेव करने का मैसेज दिखे.

mCredentialsClient.save(credential).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "SAVE: OK");
                    Toast.makeText(activity, "Credentials saved", Toast.LENGTH_SHORT).show();
                    return;
                }

                Exception e = task.getException();
                if (e instanceof ResolvableApiException) {
                    // Try to resolve the save request. This will prompt the user if
                    // the credential is new.
                    ResolvableApiException rae = (ResolvableApiException) e;
                    try {
                        rae.startResolutionForResult(this, RC_SAVE);
                    } catch (IntentSender.SendIntentException exception) {
                        // Could not resolve the request
                        Log.e(TAG, "Failed to send resolution.", exception);
                        Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // Request has no resolution
                    Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                }
            }
        });</pre>

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // ...

        if (requestCode == RC_SAVE) {
            if (resultCode == RESULT_OK) {
                Log.d(TAG, "SAVE: OK");
                Toast.makeText(this, "Credentials saved", Toast.LENGTH_SHORT).show();
            } else {
                Log.e(TAG, "SAVE: Canceled by user");
            }
        }

        // ...

    }

क्रेडेंशियल सेव करने के बाद, CredentialsClient.request() पर कॉल करके उन्हें वापस पाएं.

Android O और इसके बाद के वर्शन को टारगेट किया जा रहा है

Android O या इसके बाद के वर्शन वाले डिवाइसों पर Smart Lock का इस्तेमाल करके पासवर्ड सेव करने पर, जब भी मुमकिन होता है, तब Smart Lock अपने डायलॉग पर नेटिव ऑटोमैटिक भरने की पुष्टि करने वाले डायलॉग का इस्तेमाल करता है. (ध्यान दें कि Google की अपने-आप जानकारी भरने की सुविधा का इस्तेमाल करके सेव किए गए क्रेडेंशियल, पासवर्ड के लिए Smart Lock के साथ दो-तरफ़ा शेयर किए जाते हैं.)