एक खाते से एक से ज़्यादा प्राधिकरण सेवाएं लिंक करें

उपयोगकर्ताओं को, पुष्टि करने के एक से ज़्यादा तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है सेवा देने वाली तीसरे पक्ष की कंपनियों के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करके. एक ही Firebase उपयोगकर्ता आईडी से उपयोगकर्ताओं की पहचान की जा सकती है, भले ही पुष्टि करने की सुविधा देने वाला ईमेल पता जिसका इस्तेमाल वे साइन इन करने के लिए करते हैं. उदाहरण के लिए, साइन इन करने वाला कोई उपयोगकर्ता पासवर्ड का इस्तेमाल करके, Google खाता लिंक किया जा सकता है और आने वाले समय में इस्तेमाल करें. इसके अलावा, पहचान छिपाने वाला उपयोगकर्ता किसी Facebook खाते को लिंक करके, बाद में हस्ताक्षर कर सकता है का इस्तेमाल करें.

शुरू करने से पहले

पुष्टि करने की सुविधा देने वाली दो या इससे ज़्यादा कंपनियों के लिए सहायता जोड़ें (इनमें ये शामिल हो सकते हैं पहचान छिपाकर पुष्टि करने की सुविधा).

पुष्टि करने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करने के लिए:

  1. पुष्टि करने वाली किसी भी कंपनी या तरीके का इस्तेमाल करके, उपयोगकर्ता के खाते में साइन इन करें.

  2. पुष्टि करने की सेवा देने वाली नई कंपनी के लिए साइन-इन फ़्लो को पूरा करें. हालांकि, ऐसा नहीं किया जा सकता इसमें, signInWith- तरीकों में से किसी एक को कॉल करना भी शामिल है. उदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, Facebook ऐक्सेस टोकन या ईमेल और पासवर्ड.

  3. पुष्टि करने वाली नई कंपनी के लिए, Credential ऑब्जेक्ट पाएं:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  4. साइन इन करने वाले उपयोगकर्ता के 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.");
  }
}