একাধিক লেখক সরবরাহকারীকে সি ++ ব্যবহার করে কোনও অ্যাকাউন্টে লিঙ্ক করুন

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

তুমি শুরু করার আগে

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

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

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

    Google সাইন-ইন
    firebase::auth::Credential credential =
        firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                          nullptr);
    
    ফেসবুক লগইন
    firebase::auth::Credential credential =
        firebase::auth::FacebookAuthProvider::GetCredential(access_token);
    
    ইমেইল-পাসওয়ার্ড সাইন-ইন
    firebase::auth::Credential credential =
        firebase::auth::EmailAuthProvider::GetCredential(email, password);
    
  4. পাশ firebase::auth::Credential বস্তুর সাইন ইন ব্যবহারকারীর LinkWithCredential পদ্ধতি:

    // Link the new credential to the currently active user.
    firebase::auth::User* current_user = auth->current_user();
    firebase::Future<firebase::auth::User*> result =
        current_user->LinkWithCredential(credential);
    

    থেকে কল LinkWithCredential যদি পরিচয়পত্র ইতিমধ্যেই অন্য ব্যবহারকারীর অ্যাকাউন্টের সাথে লিঙ্ক করা হয় ব্যর্থ হবে। এই পরিস্থিতিতে, আপনাকে অবশ্যই আপনার অ্যাপের জন্য উপযুক্ত হিসাবে অ্যাকাউন্ট এবং সংশ্লিষ্ট ডেটা মার্জ করতে হবে:

    // Gather data for the currently signed in User.
    firebase::auth::User* current_user = auth->current_user();
    std::string current_email = current_user->email();
    std::string current_provider_id = current_user->provider_id();
    std::string current_display_name = current_user->display_name();
    std::string current_photo_url = current_user->photo_url();
    
    // Sign in with the new credentials.
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCredential(credential);
    
    // To keep example simple, wait on the current thread until call completes.
    while (result.status() == firebase::kFutureStatusPending) {
      Wait(100);
    }
    
    // The new User is now active.
    if (result.error() == firebase::auth::kAuthErrorNone) {
      firebase::auth::User* new_user = *result.result();
    
      // Merge new_user with the user in details.
      // ...
      (void)new_user;
    }
    

থেকে কল তাহলে LinkWithCredential সফল, ব্যবহারকারী এখন কোন লিঙ্ক প্রমাণীকরণ প্রদানকারী এবং অ্যাক্সেস একই Firebase ডেটা ব্যবহার করে সাইন ইন করতে পারেন।

আপনি একটি অ্যাকাউন্ট থেকে একজন লেখক প্রদানকারীকে লিঙ্কমুক্ত করতে পারেন, যাতে ব্যবহারকারী আর সেই সরবরাহকারীর সাথে সাইন ইন করতে না পারে।

একটি ব্যবহারকারী অ্যাকাউন্ট থেকে একটি প্রমাণীকরণ প্রদানকারী লিঙ্কমুক্ত করতে, এর প্রদানকারী আইডি পাস Unlink পদ্ধতি। আপনি কল করে একটি ব্যবহারকারী লিঙ্ক প্রমাণীকরণ প্রদানকারীর প্রদানকারী ID- র পেতে পারেন ProviderData

// Unlink the sign-in provider from the currently active user.
firebase::auth::User* current_user = auth->current_user();
firebase::Future<firebase::auth::User*> result =
    current_user->Unlink(providerId);