उपयोगकर्ताओं के साइन इन करने, खाता बनाने या पासवर्ड बदलने के बाद, अनुमति दें ताकि वे अपने क्रेडेंशियल सेव कर सकें, ताकि आने वाले समय में आपके ऐप्लिकेशन में पुष्टि अपने-आप हो सके.
शुरू करने से पहले
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();
इसके बाद, उपयोगकर्ताओं केCredentialsClient.save()
क्रेडेंशियल डालें. अगर CredentialsClient.save()
पर तुरंत कॉल नहीं किया जा रहा है, तो
क्रेडेंशियल नए हो सकते हैं. इस स्थिति में उपयोगकर्ता को पुष्टि करनी होगी
सेव करने का अनुरोध. इससे ResolvableApiException
का समाधान करें
उपयोगकर्ता को पुष्टि का प्रॉम्प्ट भेजने के लिए startResolutionForResult()
.
अगर उपयोगकर्ता क्रेडेंशियल को सेव नहीं करता है, तो उसे ऐसा करने के लिए दोबारा नहीं कहा जाएगा
ऐप्लिकेशन के लिए किसी भी खाते के क्रेडेंशियल सेव कर सकते हैं. अगर आपको कॉल करना है
उपयोगकर्ता के ऑप्ट आउट करने के बाद CredentialsClient.save()
, इसके नतीजे में
CANCELED
का स्टेटस कोड. उपयोगकर्ता Google पर जाकर, बाद में ऑप्ट इन कर सकते हैं
'पासवर्ड के लिए Smart Lock' सेक्शन में मौजूद सेटिंग ऐप्लिकेशन. उपयोगकर्ता को इसे चालू करना होगा
सभी खातों के लिए क्रेडेंशियल सेव करने की सुविधा के लिए, अगली बार क्रेडेंशियल सेव करने के लिए कहा जाएगा.
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 अपने-आप जानकारी ऑटोमैटिक भरने की पुष्टि करने वाले नेटिव डायलॉग का इस्तेमाल करता है अपनी बातचीत के लिए सबसे अच्छा विकल्प चुनें. (ध्यान दें कि 'ऑटोमैटिक भरने की सुविधा' का इस्तेमाल करके, क्रेडेंशियल सेव किए गए पासवर्ड के लिए Smart Lock के साथ Google द्वि-दिशात्मक रूप से शेयर किया जाता है.)