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

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

শুরু করার আগে

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

FirebaseAuth ক্লাস হল সকল API কলের প্রবেশদ্বার। এটি FirebaseAuth.DefaultInstance এর মাধ্যমে অ্যাক্সেসযোগ্য।
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

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

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

    গুগল সাইন-ইন
    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. সাইন-ইন করা ব্যবহারকারীর 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.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 ডেটা অ্যাক্সেস করতে পারবেন।

একটি একক Firebase ব্যবহারকারী অ্যাকাউন্টের সাথে একাধিক প্রমাণীকরণ প্রদানকারী লিঙ্ক করা থাকতে পারে (উদাহরণস্বরূপ, ইমেল/পাসওয়ার্ড, গুগল, ফেসবুক), যা ব্যবহারকারীকে বিভিন্ন পদ্ধতির মাধ্যমে একই 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);
});

সমস্যা সমাধান

একাধিক অ্যাকাউন্ট লিঙ্ক করার সময় যদি আপনি ত্রুটির সম্মুখীন হন, তাহলে যাচাইকৃত ইমেল ঠিকানাগুলিতে ডকুমেন্টেশন দেখুন।