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

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