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