C++ ব্যবহার করে Firebase-এর সাথে বেনামে যাচাইকরণ করা

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

শুরু করার আগে

  1. আপনার C++ প্রোজেক্টে Firebase যোগ করুন।
  2. আপনি এখনও Firebase প্রোজেক্টের সাথে অ্যাপ কানেক্ট না করে থাকলে, এটি Firebase কনসোল থেকে করুন।
  3. পরিচয় গোপন রেখে যাচাইকরণ চালু করুন:
    1. Firebase কনসোলে গিয়ে নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
    2. সাইন-ইন পদ্ধতি ট্যাবে, অনামিকা সাইন-ইন প্রদানকারী চালু করুন।
    3. ঐচ্ছিক: আপনার প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকলে, আপনি অটোমেটিক ক্লিন-আপ চালু করতে পারবেন। আপনি এই সেটিং চালু করলে, ৩০ দিনের বেশি পুরনো অপরিচিত অ্যাকাউন্ট অটোমেটিক মুছে যাবে। অটোমেটিক ক্লিন-আপ চালু করা প্রোজেক্টে, অ্যাননিমাস অথেন্টিকেশন আর ব্যবহারের সীমা বা বিলিং কোটার মধ্যে গণনা করা হবে না। দেখুন অটোমেটিক ক্লিন-আপ।

পরিচয় গোপন রেখে Firebase-এর মাধ্যমে যাচাইকরণ করা

সাইন-আউট করা কোনও ব্যবহারকারী Firebase-এর মাধ্যমে যাচাইকরণ প্রয়োজন এমন কোনও অ্যাপ ফিচার ব্যবহার করলে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করে ব্যবহারকারীকে বেনামে সাইন-ইন করান:

Auth ক্লাস হল সব API কলের গেটওয়ে।
  1. Auth ও App হেডার ফাইল যোগ করুন:
    #include <cassert>
    #include <cstdint>
    
    #include "firebase/app.h"
    #include "firebase/auth.h"
  2. আপনার ইনিশিয়ালাইজেশন কোডে, একটি firebase::App ক্লাস তৈরি করুন।
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
  3. আপনার firebase::App-এর জন্য firebase::auth::Auth ক্লাস পান। App ও Auth-এর মধ্যে এক-এক ম্যাপিং আছে।
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
  • Auth::SignInAnonymously নম্বরে কল করুন।
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
  • আপনার প্রোগ্রামে যদি নিয়মিত আপডেট লুপ চলে (যেমন, প্রতি সেকেন্ডে ৩০ বা ৬০ বার), তাহলে আপনি Auth::SignInAnonymouslyLastResult-এর মাধ্যমে প্রতি আপডেটে একবার করে ফলাফল চেক করতে পারবেন:
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    অথবা, আপনার প্রোগ্রাম ইভেন্ট-নির্ভর হলে, আপনি Future-এ কলব্যাক রেজিস্টার করতে পারেন।
  • অনামonymous অ্যাকাউন্টকে স্থায়ী অ্যাকাউন্টে পরিবর্তন করা

    কোনও বেনামী ব্যবহারকারী আপনার অ্যাপে সাইন-আপ করলে, আপনি হয়ত তাকে তার নতুন অ্যাকাউন্টের মাধ্যমে কাজ চালিয়ে যেতে দিতে চাইবেন—যেমন, আপনি হয়ত সাইন-আপ করার আগে ব্যবহারকারী যেসব আইটেম তার শপিং কার্টে যোগ করেছেন সেগুলি তার নতুন অ্যাকাউন্টের শপিং কার্টে উপলভ্য করতে চাইবেন। এটি করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

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

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

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

    LinkWithCredential কল করা সফল হলে, ব্যবহারকারীর নতুন অ্যাকাউন্ট অনামনিমাস অ্যাকাউন্টের Firebase ডেটা অ্যাক্সেস করতে পারবে।

    অটোমেটিক ক্লিন-আপ

    আপনার প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকলে, আপনি Firebase কনসোলে অটোমেটিক ক্লিন-আপ চালু করতে পারবেন। এই ফিচার চালু করলে, আপনি Firebase-কে ৩০ দিনের বেশি পুরনো অনামিকা অ্যাকাউন্ট অটোমেটিক মুছে দেওয়ার অনুমতি দেন। অটোমেটিক পরিষ্কার করার সুবিধা চালু থাকা প্রোজেক্টে, পরিচয় গোপন রেখে করা যাচাইকরণ ব্যবহারের সীমা বা বিলিং কোটার মধ্যে গণনা করা হবে না।

    • অটোমেটিক ক্লিন-আপ চালু করার পরে তৈরি করা যেকোনও বেনামী অ্যাকাউন্ট তৈরি করার ৩০ দিন পরে যেকোনও সময় অটোমেটিক মুছে ফেলা হতে পারে।
    • অটোমেটিক ক্লিন-আপ চালু করার ৩০ দিন পরে আগে থেকে থাকা বেনামী অ্যাকাউন্ট অটোমেটিক মুছে দেওয়ার জন্য উপযুক্ত হবে।
    • আপনি অটোমেটিক ক্লিন-আপ বন্ধ করে দিলে, মুছে ফেলার জন্য শিডিউল করা যেকোনও বেনামী অ্যাকাউন্ট মুছে ফেলার জন্য শিডিউল করা থাকবে।
    • আপনি কোনও সাইন-ইন পদ্ধতির সাথে লিঙ্ক করে কোনও বেনামী অ্যাকাউন্ট "আপগ্রেড" করলে, অ্যাকাউন্টটি অটোমেটিক মুছে যাবে না।

    এই ফিচার চালু করার আগে কতজন ব্যবহারকারী প্রভাবিত হবেন তা দেখতে চাইলে এবং আপনি যদি নিজের প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকেন, তাহলে আপনি is_anon-এর মাধ্যমে ক্লাউড লগিং ফিল্টার করতে পারবেন।

    পরবর্তী ধাপ

    যেহেতু ব্যবহারকারীরা এখন Firebase-এর মাধ্যমে যাচাই করিয়ে নিতে পারবেন, তাই আপনি Firebase নিয়ম ব্যবহার করে আপনার Firebase ডেটাবেসে ডেটা অ্যাক্সেস করার ব্যাপারে নিয়ন্ত্রণ করতে পারবেন।