ব্যবহারকারীরা সফলভাবে সাইন ইন করার পরে, অ্যাকাউন্ট তৈরি করে বা পাসওয়ার্ড পরিবর্তন করার পরে, আপনার অ্যাপে ভবিষ্যতের প্রমাণীকরণ স্বয়ংক্রিয় করতে তাদের শংসাপত্রগুলি সংরক্ষণ করার অনুমতি দিন।
আপনি শুরু করার আগে
একটি অ্যান্ড্রয়েড স্টুডিও প্রকল্প কনফিগার করুন ।
শংসাপত্র সংরক্ষণ করুন
ব্যবহারকারীর সাইন-ইন তথ্য সম্বলিত একটি 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()
এ কল অবিলম্বে সফল না হয়, শংসাপত্রগুলি নতুন হতে পারে, সেক্ষেত্রে ব্যবহারকারীকে সংরক্ষণের অনুরোধ নিশ্চিত করতে হবে। ব্যবহারকারীকে নিশ্চিতকরণের জন্য অনুরোধ করতে startResolutionForResult()
দিয়ে ResolvableApiException
সমাধান করুন।
ব্যবহারকারী যদি শংসাপত্র সংরক্ষণ না করা বেছে নেন, তাহলে ব্যবহারকারীকে অ্যাপের জন্য কোনো অ্যাকাউন্টের শংসাপত্র সংরক্ষণ করার জন্য আবার অনুরোধ করা হবে না। একজন ব্যবহারকারী অনির্বাচন করার পরে আপনি যদি CredentialsClient.save()
কল করেন, তাহলে এর ফলাফলের একটি স্ট্যাটাস কোড থাকবে CANCELED
। ব্যবহারকারী পরে 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 বা তার পরবর্তী ডিভাইসে চলমান ডিভাইসগুলিতে Smart Lock ব্যবহার করে পাসওয়ার্ড শংসাপত্রগুলি সংরক্ষণ করেন, তখন Smart Lock যখনই সম্ভব তার নিজস্ব ডায়ালগের উপর স্থানীয় অটোফিল নিশ্চিতকরণ ডায়ালগ ব্যবহার করে৷ (মনে রাখবেন যে Google-এর সাথে অটোফিল ব্যবহার করে সংরক্ষিত শংসাপত্রগুলি পাসওয়ার্ডের জন্য Smart Lock-এর সাথে দ্বিমুখীভাবে ভাগ করা হয়।)