ইউনিটিতে একটি অ্যাকাউন্টে একাধিক প্রমাণ প্রদানকারীকে লিঙ্ক করুন

আপনি একটি বিদ্যমান ব্যবহারকারীর অ্যাকাউন্টে প্রমাণীকরণ প্রদানকারীর শংসাপত্র লিঙ্ক করে একাধিক প্রমাণীকরণ প্রদানকারী ব্যবহার করে ব্যবহারকারীদের আপনার অ্যাপে সাইন ইন করার অনুমতি দিতে পারেন। ব্যবহারকারীরা সাইন ইন করতে যে প্রমাণীকরণ প্রদানকারীই ব্যবহার করুক না কেন একই Firebase ব্যবহারকারী আইডি দ্বারা শনাক্ত করা যায়৷ উদাহরণস্বরূপ, যে ব্যবহারকারী একটি পাসওয়ার্ড দিয়ে সাইন ইন করেছেন সে একটি Google অ্যাকাউন্ট লিঙ্ক করতে পারে এবং ভবিষ্যতে যেকোনো পদ্ধতিতে সাইন ইন করতে পারে৷ অথবা, একজন বেনামী ব্যবহারকারী একটি Facebook অ্যাকাউন্ট লিঙ্ক করতে পারেন এবং তারপরে, আপনার অ্যাপ ব্যবহার চালিয়ে যেতে Facebook-এ সাইন ইন করতে পারেন।

আপনি শুরু করার আগে

আপনার অ্যাপে দুই বা ততোধিক প্রমাণীকরণ প্রদানকারীর জন্য সমর্থন যোগ করুন (সম্ভবত বেনামী প্রমাণীকরণ সহ)।

FirebaseAuth ক্লাস হল সমস্ত API কলের গেটওয়ে। এটি FirebaseAuth.DefaultInstance এর মাধ্যমে অ্যাক্সেসযোগ্য।
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

একটি বিদ্যমান ব্যবহারকারী অ্যাকাউন্টে প্রমাণীকরণ প্রদানকারীর শংসাপত্রগুলি লিঙ্ক করতে:

  1. যেকোনো প্রমাণীকরণ প্রদানকারী বা পদ্ধতি ব্যবহার করে ব্যবহারকারীকে সাইন ইন করুন।
  2. Firebase.Auth.FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync পদ্ধতিগুলির একটিতে কল করা পর্যন্ত নতুন প্রমাণীকরণ প্রদানকারীর জন্য সাইন-ইন প্রবাহ সম্পূর্ণ করুন, কিন্তু অন্তর্ভুক্ত নয়৷ উদাহরণস্বরূপ, ব্যবহারকারীর গুগল আইডি টোকেন, ফেসবুক অ্যাক্সেস টোকেন বা ইমেল এবং পাসওয়ার্ড পান।
  3. নতুন প্রমাণীকরণ প্রদানকারীর জন্য একটি Firebase.Auth.Credential পান:

    Google সাইন-ইন
    Firebase.Auth.Credential credential =
        Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
    ফেসবুক লগইন
    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);
});