Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

Apple প্ল্যাটফর্মগুলিতে, নোট করুন যে ফোন নম্বর সাইন-ইন করার জন্য একটি শারীরিক ডিভাইসের প্রয়োজন এবং এটি একটি সিমুলেটরে কাজ করবে না৷

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

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

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

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

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

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

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

APN-এর বিজ্ঞপ্তি পাওয়া শুরু করুন (অ্যাপল প্ল্যাটফর্ম)

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

Firebase প্রমাণীকরণের সাথে ব্যবহারের জন্য APN-এর বিজ্ঞপ্তি সক্ষম করতে:

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

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

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

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

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

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

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

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

  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();