उपयोगकर्ताओं को अपने ऐप्लिकेशन में साइन इन करने की अनुमति देने के लिए, एक से ज़्यादा पुष्टि करने वाली सेवाओं को जोड़ा जा सकता है. इसके लिए, पुष्टि करने वाली सेवा के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करें. उपयोगकर्ताओं की पहचान, एक ही Firebase उपयोगकर्ता आईडी से की जाती है. भले ही, उन्होंने साइन इन करने के लिए पुष्टि करने वाली किसी भी सेवा का इस्तेमाल किया हो. उदाहरण के लिए, पासवर्ड से साइन इन करने वाला कोई उपयोगकर्ता, Google खाता लिंक कर सकता है. इसके बाद, वह इनमें से किसी भी तरीके से साइन इन कर सकता है. इसके अलावा, कोई गुमनाम उपयोगकर्ता, Facebook खाता लिंक कर सकता है. इसके बाद, वह आपके ऐप्लिकेशन का इस्तेमाल जारी रखने के लिए, Facebook से साइन इन कर सकता है.
शुरू करने से पहले
अपने ऐप्लिकेशन में, पुष्टि करने वाली दो या उससे ज़्यादा सेवाओं के लिए सहायता जोड़ें. इसमें, गुमनाम पुष्टि करने की सुविधा भी शामिल की जा सकती है.
पुष्टि करने वाली सेवा के क्रेडेंशियल को किसी उपयोगकर्ता खाते से लिंक करना
पुष्टि करने वाली सेवा के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करने के लिए:
पुष्टि करने वाली किसी भी सेवा या तरीके का इस्तेमाल करके, उपयोगकर्ता को साइन इन कराएं.
पुष्टि करने वाली नई सेवा के लिए, साइन-इन की प्रोसेस पूरी करें. हालांकि, के किसी भी तरीके को कॉल न करें.
signInWithउदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, 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.साइन-इन करने वाले उपयोगकर्ता के
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.");
}
}
समस्या का हल
अगर आपको एक से ज़्यादा खाते लिंक करने में गड़बड़ियां आ रही हैं, तो पुष्टि किए गए ईमेल पतों के बारे में दस्तावेज़ देखें.