Unity में मौजूद किसी खाते से, पुष्टि करने वाली एक से ज़्यादा कंपनियों को लिंक करें

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

वेब कंटेनर इंस्टॉल करने से पहले

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

FirebaseAuth क्लास, सभी एपीआई कॉल के लिए गेटवे होती है. इसे FirebaseAuth.DefaultInstance के ज़रिए ऐक्सेस किया जा सकता है.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

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

  1. पुष्टि करने वाली किसी भी कंपनी या तरीके का इस्तेमाल करके, उपयोगकर्ता के खाते में साइन इन करें.
  2. पुष्टि करने वाली नई कंपनी के लिए, साइन-इन फ़्लो को पूरा करें. हालांकि, Firebase.Auth.FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync के किसी एक तरीके का इस्तेमाल करके ऐसा करना ज़रूरी नहीं है. उदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, Facebook का ऐक्सेस टोकन या ईमेल और पासवर्ड पाएं.
  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. Firebase.Auth.Credential ऑब्जेक्ट को साइन इन किए हुए उपयोगकर्ता के LinkWithCredentialAsync तरीके में पास करें:

    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.AuthResult result = task.Result;
      Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})",
          result.User.DisplayName, result.User.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.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.AuthResult result = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          result.User.DisplayName, result.User.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.AuthResult result = task.Result;
  Debug.LogFormat("Credentials successfully unlinked from user: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});