Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एक खाते में एकाधिक प्रामाणिक प्रदाताओं को एकता में लिंक करें

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

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

अपने ऐप में दो या अधिक प्रमाणीकरण प्रदाताओं (संभवतः अनाम प्रमाणीकरण सहित) के लिए समर्थन जोड़ें।

FirebaseAuth क्लास सभी API कॉल के लिए प्रवेश द्वार है। यह FirebaseAuth.DefaultInstance के माध्यम से सुलभ है।
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

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

  1. किसी भी प्रमाणीकरण प्रदाता या विधि का उपयोग करके उपयोगकर्ता में साइन इन करें।
  2. नए प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह को पूरा करें, लेकिन Firebase.Auth.FirebaseAuth.SignInWithCredentialAsync विधियों में से एक को शामिल करते हुए, नहीं। उदाहरण के लिए, उपयोगकर्ता की Google आईडी टोकन, फेसबुक एक्सेस टोकन या ईमेल और पासवर्ड प्राप्त करें।
  3. नए प्रमाणीकरण प्रदाता के लिए एक Firebase.Auth.Credential प्राप्त करें:

    Google साइन-इन
    Firebase.Auth.Credential credential =
        Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
    
    Facebook लॉगिन
    Firebase.Auth.Credential credential =
        Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);
    
    ईमेल-पासवर्ड साइन-इन
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    
  4. उपयोगकर्ता के LinkWithCredentialAsync विधि में Firebase.Auth.Credential ऑब्जेक्ट पास करें:

    auth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("LinkWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("LinkWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

    यदि क्रेडेंशियल पहले से किसी अन्य उपयोगकर्ता खाते से लिंक हैं, तो LinkWithCredentialAsync लिए कॉल विफल हो जाएगी। इस स्थिति में, आपको अपने ऐप के लिए उपयुक्त खातों और संबंधित डेटा को मर्ज करना होगा:

    // Gather data for the currently signed in User.
    string currentUserId = auth.CurrentUser.UserId;
    string currentEmail = auth.CurrentUser.Email;
    string currentDisplayName = auth.CurrentUser.DisplayName;
    System.Uri currentPhotoUrl = auth.CurrentUser.PhotoUrl;
    
    // Sign in with the new credentials.
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    
      // TODO: Merge app specific details using the newUser and values from the
      // previous user, saved above.
    });
    

यदि LinkWithCredentialAsync लिए कॉल सफल होता है, तो उपयोगकर्ता अब किसी भी लिंक किए गए प्रमाणीकरण प्रदाता का उपयोग करके साइन इन कर सकता है और उसी Firebase डेटा तक पहुंच सकता है।

आप किसी खाते से किसी अन्य प्रदाता को अनलिंक कर सकते हैं, ताकि उपयोगकर्ता अब उस प्रदाता के साथ साइन इन न कर सके।

किसी उपयोगकर्ता खाते से किसी अन्य प्रदाता को अनलिंक करने के लिए, प्रदाता आईडी को UnlinkAsync विधि से पास करें। आप को फोन करके एक उपयोगकर्ता से जुड़ा हुआ प्रमाणन प्रदाताओं के प्रदाता आईडी प्राप्त कर सकते हैं ProviderData

// Unlink the sign-in provider from the currently active user.
// providerIdString is a string identifying a provider,
// retrieved via FirebaseAuth.FetchProvidersForEmail().
auth.CurrentUser.UnlinkAsync(providerIdString).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("UnlinkAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("UnlinkAsync encountered an error: " + task.Exception);
    return;
  }

  // The user has been unlinked from the provider.
  Firebase.Auth.FirebaseUser newUser = task.Result;
  Debug.LogFormat("Credentials successfully unlinked from user: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});