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