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