आप प्रमाणीकरण प्रदाता क्रेडेंशियल्स को मौजूदा उपयोगकर्ता खाते से लिंक करके एकाधिक प्रमाणीकरण प्रदाताओं का उपयोग करके उपयोगकर्ताओं को अपने ऐप में साइन इन करने की अनुमति दे सकते हैं। उपयोगकर्ता उसी Firebase उपयोगकर्ता आईडी से पहचाने जा सकते हैं, भले ही वे प्रमाणीकरण प्रदाता द्वारा साइन इन करने के लिए उपयोग किए गए हों। उदाहरण के लिए, पासवर्ड से साइन इन करने वाला उपयोगकर्ता Google खाते को लिंक कर सकता है और भविष्य में किसी भी विधि से साइन इन कर सकता है। या, कोई अनाम उपयोगकर्ता किसी Facebook खाते को लिंक कर सकता है और बाद में, आपके ऐप का उपयोग जारी रखने के लिए Facebook के साथ साइन इन कर सकता है।
शुरू करने से पहले
अपने ऐप में दो या अधिक प्रमाणीकरण प्रदाताओं (संभवतः अनाम प्रमाणीकरण सहित) के लिए समर्थन जोड़ें।
प्रमाणीकरण प्रदाता क्रेडेंशियल को उपयोगकर्ता खाते से लिंक करें
प्रमाणीकरण प्रदाता क्रेडेंशियल्स को किसी मौजूदा उपयोगकर्ता खाते से लिंक करने के लिए:
किसी प्रमाणीकरण प्रदाता या विधि का उपयोग करके उपयोगकर्ता में साइन इन करें।
नए प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह को साइन
signInWith
- विधियों में से किसी एक को कॉल करने तक, लेकिन इसमें शामिल नहीं है। उदाहरण के लिए, उपयोगकर्ता का Google ID टोकन, Facebook एक्सेस टोकन, या ईमेल और पासवर्ड प्राप्त करें।नए प्रमाणीकरण प्रदाता के लिए एक
Credential
ऑब्जेक्ट प्राप्त करें:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Credential
ऑब्जेक्ट को साइन-इन उपयोगकर्ता केlinkWithCredential()
विधि में पास करें: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()
को कॉल सफल होती है, तो उपयोगकर्ता अब किसी भी लिंक किए गए प्रमाणीकरण प्रदाता का उपयोग करके साइन इन कर सकता है और उसी फायरबेस डेटा तक पहुंच सकता है।
किसी उपयोगकर्ता खाते से प्रमाणीकरण प्रदाता को अनलिंक करें
आप किसी प्रमाणीकरण प्रदाता को किसी खाते से अनलिंक कर सकते हैं, ताकि उपयोगकर्ता अब उस प्रदाता के साथ साइन इन न कर सके।
किसी उपयोगकर्ता खाते से प्रमाणीकरण प्रदाता को अनलिंक करने के लिए, प्रदाता आईडी को 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("Unkown error.");
}
}