একটি বিদ্যমান ব্যবহারকারী অ্যাকাউন্টের সাথে অথেন্টিকেশন প্রোভাইডারের ক্রেডেনশিয়াল লিঙ্ক করার মাধ্যমে আপনি ব্যবহারকারীদের একাধিক অথেন্টিকেশন প্রোভাইডার ব্যবহার করে আপনার অ্যাপে সাইন ইন করার অনুমতি দিতে পারেন। ব্যবহারকারীরা সাইন ইন করার জন্য যে অথেন্টিকেশন প্রোভাইডারই ব্যবহার করুক না কেন, তাদের একই Firebase ইউজার আইডি দ্বারা শনাক্ত করা যায়। উদাহরণস্বরূপ, একজন ব্যবহারকারী যিনি পাসওয়ার্ড দিয়ে সাইন ইন করেছেন, তিনি একটি Google অ্যাকাউন্ট লিঙ্ক করে ভবিষ্যতে যেকোনো একটি পদ্ধতিতে সাইন ইন করতে পারেন। অথবা, একজন বেনামী ব্যবহারকারী একটি Facebook অ্যাকাউন্ট লিঙ্ক করে পরে আপনার অ্যাপটি ব্যবহার চালিয়ে যাওয়ার জন্য Facebook দিয়ে সাইন ইন করতে পারেন।
শুরু করার আগে
আপনার অ্যাপে দুই বা ততোধিক অথেনটিকেশন প্রোভাইডারের (সম্ভবত অ্যানোনিমাস অথেনটিকেশন সহ) জন্য সাপোর্ট যোগ করুন।
ব্যবহারকারীর অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারীর পরিচয়পত্র লিঙ্ক করুন
বিদ্যমান ব্যবহারকারী অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারীর পরিচয়পত্র লিঙ্ক করতে:
যেকোনো প্রমাণীকরণ প্রদানকারী বা পদ্ধতি ব্যবহার করে ব্যবহারকারীকে সাইন ইন করান।
নতুন অথেনটিকেশন প্রোভাইডারের জন্য সাইন-ইন প্রক্রিয়াটি সম্পূর্ণ করুন, তবে
signInWithমেথডগুলোর কোনো একটি কল করা এর অন্তর্ভুক্ত নয়। উদাহরণস্বরূপ, ব্যবহারকারীর গুগল আইডি টোকেন, ফেসবুক অ্যাক্সেস টোকেন, অথবা ইমেল এবং পাসওয়ার্ড সংগ্রহ করুন।নতুন প্রমাণীকরণ প্রদানকারীর জন্য একটি
Credentialঅবজেক্ট নিন:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.সাইন-ইন করা ব্যবহারকারীর
linkWithCredential()মেথডেCredentialঅবজেক্টটি পাস করুন:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
linkWithCredential() কলটি সফল হলে, ব্যবহারকারী এখন যেকোনো লিঙ্ক করা অথেনটিকেশন প্রোভাইডার ব্যবহার করে সাইন ইন করতে এবং একই Firebase ডেটা অ্যাক্সেস করতে পারবেন।
ব্যবহারকারীর অ্যাকাউন্ট থেকে একটি প্রমাণীকরণ প্রদানকারীকে অলিঙ্ক করুন
আপনি একটি অ্যাকাউন্ট থেকে কোনো অথেন্টিকেশন প্রোভাইডারকে আনলিঙ্ক করতে পারেন, যাতে ব্যবহারকারী আর সেই প্রোভাইডার দিয়ে সাইন ইন করতে না পারেন।
ব্যবহারকারীর অ্যাকাউন্ট থেকে কোনো অথোরাইজেশন প্রোভাইডারকে আনলিঙ্ক করতে, unlink() মেথডে প্রোভাইডার আইডিটি পাস করুন। কোনো ব্যবহারকারীর সাথে লিঙ্ক করা অথোরাইজেশন প্রোভাইডারগুলোর আইডি আপনি User অবজেক্টের providerData প্রপার্টি থেকে পেতে পারেন।
try {
await FirebaseAuth.instance.currentUser?.unlink(providerId);
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "no-such-provider":
print("The user isn't linked to the provider or the provider "
"doesn't exist.");
break;
default:
print("Unknown error.");
}
}
সমস্যা সমাধান
একাধিক অ্যাকাউন্ট লিঙ্ক করার সময় কোনো ত্রুটি দেখা দিলে, যাচাইকৃত ইমেল ঠিকানা সম্পর্কিত ডকুমেন্টেশন দেখুন।