একটি ফোন নম্বর এবং সি ++ ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন

আপনি ব্যবহারকারীর ফোনে একটি এসএমএস বার্তা পাঠিয়ে ব্যবহারকারীর সাইন ইন করতে Firebase প্রমাণীকরণ ব্যবহার করতে পারেন। ব্যবহারকারী এসএমএস বার্তায় থাকা এককালীন কোড ব্যবহার করে সাইন ইন করে।

এই নথিতে বর্ণনা করা হয়েছে কিভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন প্রবাহ বাস্তবায়ন করতে হয়।

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

  1. আপনার সি ++ প্রকল্পে Firebase যোগ করুন
  2. আপনি এখনও আপনার Firebase প্রকল্পে আপনার অ্যাপ সংযুক্ত না করে থাকেন, থেকে তা করতে Firebase কনসোল

আইওএস-এ, মনে রাখবেন যে ফোন নম্বর সাইন-ইন করার জন্য একটি ফিজিক্যাল ডিভাইস প্রয়োজন এবং এটি সিমুলেটরে কাজ করবে না।

নিরাপত্তা উদ্বেগ

কেবলমাত্র একটি ফোন নম্বর ব্যবহার করে প্রমাণীকরণ, সুবিধাজনক অবস্থায়, অন্যান্য উপলব্ধ পদ্ধতির তুলনায় কম নিরাপদ, কারণ একটি ফোন নম্বর দখল করা ব্যবহারকারীদের মধ্যে সহজেই স্থানান্তরিত হতে পারে। এছাড়াও, একাধিক ব্যবহারকারীর প্রোফাইল সহ ডিভাইসগুলিতে, যে কোনও ব্যবহারকারী এসএমএস বার্তা পেতে পারে সে ডিভাইসের ফোন নম্বর ব্যবহার করে অ্যাকাউন্টে সাইন ইন করতে পারে।

আপনি যদি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনাকে আরো নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি এটি অফার করা উচিত এবং ব্যবহারকারীদের ফোন নম্বর সাইন-ইন ব্যবহারের নিরাপত্তা ট্রেড অফ সম্পর্কে অবহিত করা উচিত।

আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন

এসএমএসের মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার ফায়ারবেস প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করতে হবে:

  1. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন।
  2. সাইন ইন করার পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।

ফায়ারবেসের ফোন নম্বর সাইন-ইন রিকোয়েস্ট কোটা যথেষ্ট বেশি যে অধিকাংশ অ্যাপই প্রভাবিত হবে না। যাইহোক, যদি আপনার ফোন প্রমাণীকরণের সাথে ব্যবহারকারীদের খুব বেশি পরিমাণে সাইন ইন করার প্রয়োজন হয়, তাহলে আপনাকে আপনার মূল্য পরিকল্পনা আপগ্রেড করতে হতে পারে। দেখুন মূল্যের পাতা।

APNs বিজ্ঞপ্তিগুলি পাওয়া শুরু করুন (iOS)

আইওএস -এ ফোন নম্বর প্রমাণীকরণ ব্যবহার করতে, আপনার অ্যাপ অবশ্যই ফায়ারবেস থেকে APNs বিজ্ঞপ্তি পেতে সক্ষম হবে। আপনি যখন কোনো ব্যবহারকারীর ডিভাইসে প্রথমবার তার ফোন নম্বর দিয়ে সাইন ইন করেন, তখন ফায়ারবেস প্রমাণীকরণ ডিভাইসটি একটি নীরব পুশ বিজ্ঞপ্তি পাঠায় যা যাচাই করে যে ফোন নম্বর সাইন-ইন করার অনুরোধ আপনার অ্যাপ থেকে এসেছে। (এই কারণে, সিমুলেটরে ফোন নম্বর সাইন-ইন ব্যবহার করা যাবে না।)

ফায়ারবেস প্রমাণীকরণের সাথে ব্যবহারের জন্য APNs বিজ্ঞপ্তি সক্ষম করতে:

  1. Xcode সালে পুশ বিজ্ঞপ্তি সক্ষম আপনার প্রকল্পের জন্য।
  2. ফায়ারবেসে আপনার APNs সার্টিফিকেট আপলোড করুন। আপনার কি ইতিমধ্যে একটি APNS শংসাপত্র না থাকে তাহলে, এ একটি তৈরি করতে ভুলবেন না অ্যাপল ডেভেলপার সদস্য সেন্টার

    1. Firebase কনসোলে আপনার প্রকল্পের ভিতরে,, গিয়ার আইকন নির্বাচন প্রকল্প সেটিং নির্বাচন করুন, এবং তারপর ক্লাউড মেসেজিং ট্যাব নির্বাচন করুন।

    2. আপনার গঠন শংসাপত্র রয়েছে, আপনার উতপাদন শংসাপত্র, অথবা উভয় জন্য আপলোডের সার্টিফিকেট বোতাম নির্বাচন করুন। অন্তত একটি প্রয়োজন।

    3. প্রতিটি শংসাপত্রের জন্য, .p12 ফাইলটি নির্বাচন করুন এবং যদি থাকে তবে পাসওয়ার্ড দিন। নিশ্চিত করুন যে এই শংসাপত্রের বান্ডেল আইডি আপনার অ্যাপের বান্ডেল আইডির সাথে মেলে। সংরক্ষণ করুন নির্বাচন করুন।

ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড পাঠান

শুরু করতে ফোন নম্বর যে তাদের অনুরোধ জানানো তাদের ফোন নম্বর প্রদান সাইন-ইন, ব্যবহারকারী একটি ইন্টারফেস উপস্থিত, এবং তারপর কল PhoneAuthProvider::VerifyPhoneNumber অনুরোধ যে Firebase SMS এর মাধ্যমে ব্যবহারকারীর ফোন থেকে একটি প্রমাণীকরণ কোড পাঠাতে:

  1. ব্যবহারকারীর ফোন নম্বর পান।

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

  2. ফোন করুন PhoneAuthProvider::VerifyPhoneNumber , এটা ব্যবহারকারীর ফোন নম্বর ক্ষণস্থায়ী।
    class PhoneListener : public PhoneAuthProvider::Listener {
     public:
      ~PhoneListener() override {}
    
      void OnVerificationCompleted(Credential credential) override {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // No need for the user to input the verification code manually.
        // `credential` can be used instead of calling GetCredential().
      }
    
      void OnVerificationFailed(const std::string& error) override {
        // Verification code not sent.
      }
    
      void OnCodeSent(const std::string& verification_id,
                      const PhoneAuthProvider::ForceResendingToken&
                          force_resending_token) override {
        // Verification code successfully sent via SMS.
        // Show the Screen to enter the Code.
        // Developer may want to save that verification_id along with other app states in case
        // the app is terminated before the user gets the SMS verification code.
      }
    };
    
    PhoneListener phone_listener;
    PhoneAuthProvider& phone_provider = PhoneAuthProvider::GetInstance(auth);
    phone_provider->VerifyPhoneNumber(phone_number, kAutoVerifyTimeOut, null,
                                      &phone_listener);
    
    আপনি কল যখন PhoneAuthProvider::VerifyPhoneNumber , Firebase,
    • (iOS এ) আপনার অ্যাপে একটি নীরব পুশ বিজ্ঞপ্তি পাঠায়,
    • নির্দিষ্ট ফোন নম্বরে একটি প্রমাণীকরণ কোড সম্বলিত একটি এসএমএস বার্তা পাঠায় এবং আপনার সমাপ্তি ফাংশনে একটি যাচাইকরণ আইডি পাস করে। ব্যবহারকারীর সাইন ইন করার জন্য আপনার যাচাইকরণ কোড এবং যাচাইকরণ আইডি উভয়ই প্রয়োজন হবে।
  3. যাচাইকরণ আইডি সংরক্ষণ করুন এবং আপনার অ্যাপ্লিকেশন লোড হলে এটি পুনরুদ্ধার করুন। এটি করার মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে ব্যবহারকারীর সাইন-ইন প্রবাহ সম্পূর্ণ করার আগে আপনার অ্যাপটি বন্ধ হয়ে গেলে আপনার কাছে এখনও একটি বৈধ যাচাইকরণ আইডি আছে (উদাহরণস্বরূপ, এসএমএস অ্যাপে স্যুইচ করার সময়)।

    আপনি যেভাবেই চান ভেরিফিকেশন আইডি চালিয়ে যেতে পারেন। আপনি যদি একটি ক্রস-প্ল্যাটফর্ম C ++ ফ্রেমওয়ার্ক দিয়ে লিখছেন, তাহলে এটি অ্যাপ সমাপ্তি এবং পুনরুদ্ধারের জন্য বিজ্ঞপ্তি প্রদান করা উচিত। এই ইভেন্টগুলিতে, আপনি যথাক্রমে যাচাইকরণ আইডি সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন।

থেকে কল তাহলে VerifyPhoneNumber ফলাফল OnCodeSent আপনার লিসেনার আহ্বান করা হচ্ছে, আপনি যখন তারা এসএমএস বার্তায় তা গ্রহণ যাচাইকরণ কোড টাইপ করতে ব্যবহারকারী সূচিত করে।

অন্যদিকে, যদি থেকে কল VerifyPhoneNumber ফলাফল OnVerificationCompleted , তারপর স্বয়ংক্রিয় যাচাইকরণ সফল হয়েছে এবং আপনি এখন একটি থাকবে Credential যার সাহায্যে আপনি যেমন নীচে বর্ণিত ব্যবহার করতে পারেন।

ভেরিফিকেশন কোড দিয়ে ব্যবহারকারীর সাইন ইন করুন

ব্যবহারকারী SMS বার্তা থেকে যাচাইকরণ কোড সহ আপনার অ্যাপ্লিকেশন দ্বারা প্রদত্ত পর তৈরি করে ব্যবহারকারী সাইন ইন Credential যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে বস্তু এবং যে বস্তুর ক্ষণস্থায়ী Auth::SignInWithCredential

  1. ব্যবহারকারীর কাছ থেকে যাচাইকরণ কোড পান।
  2. একটি তৈরি করুন Credential যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে অবজেক্ট।
    Credential credential = phone_auth_provider->GetCredential(
        verification_id_.c_str(), verification_code.c_str());
        
  3. ব্যবহারকারীর সাইন ইন করুন Credential বস্তু:
    Future<User*> future = auth_->SignInWithCredential(credential);
    future.OnCompletion(
        [](const Future<User*>& result, void*) {
          if (result.error() == kAuthErrorNone) {
            // Successful.
            // User is signed in.
            const User* user = *result.result();
    
            // This should display the phone number.
            printf("Phone number: %s", user->phone_number().c_str());
    
            // The phone number provider UID is the phone number itself.
            printf("Phone provider uid: %s", user->uid().c_str());
    
            // The phone number providerID is 'phone'
            printf("Phone provider ID: %s", user->provider_id().c_str());
          } else {
            // Error.
            printf("Sign in error: %s", result.error_message().c_str());
          }
        },
        nullptr);
    

পরবর্তী পদক্ষেপ

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

  • আপনার অ্যাপ্লিকেশান, আপনি থেকে ব্যবহারকারীর সাধারণ প্রোফাইল তথ্য পেতে পারেন firebase::auth::User বস্তু:

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • আপনার Firebase রিয়েলটাইম ডাটাবেস এবং ক্লাউড স্টোরেজ সিকিউরিটি রুলস , আপনি পেতে পারেন সাইন ইন থেকে ব্যবহারকারী এর অনন্য ব্যবহারকারী আইডি auth পরিবর্তনশীল, এবং এটি ব্যবহার কোন ডেটা একটি ব্যবহারকারী অ্যাক্সেস করতে পারবেন নিয়ন্ত্রন করতে পারেন।

আপনি ব্যবহারকারীদের দ্বারা একাধিক প্রমাণীকরণ প্রদানকারীর ব্যবহার করে আপনার অ্যাপ্লিকেশানে সাইন ইন করার অনুমতি দিতে পারেন একটি বিদ্যমান ব্যবহারকারীর অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারী পরিচয়পত্র লিঙ্ক।

একটি ব্যবহারকারী সাইন আউট করতে, কল SignOut() :

auth->SignOut();