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

ব্যবহারকারীর ফোনে এসএমএস মেসেজ পাঠিয়ে আপনি Firebase Authentication ব্যবহার করে কোনও ব্যবহারকারীকে সাইন-ইন করাতে পারবেন। ব্যবহারকারী এসএমএস মেসেজে থাকা একবার ব্যবহারের কোড ব্যবহার করে সাইন-ইন করেন।

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

শুরু করার আগে

আপনি আগে থেকে না করে থাকলে, আপনার JavaScript প্রোজেক্টে Firebase যোগ করুন নিবন্ধে বর্ণিত পদ্ধতি অনুযায়ী, Firebase কনসোল থেকে আপনার প্রোজেক্টে ইনিশিয়ালাইজেশন স্নিপেট কপি করুন।

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

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

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

আপনার Firebase প্রোজেক্টের জন্য ফোন নম্বর দিয়ে সাইন-ইন করার সুবিধা চালু করা

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

  1. Firebase কনসোলে, নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
  2. সাইন-ইন পদ্ধতি ট্যাবে, ফোন সাইন-ইন প্রোভাইডার চালু করুন।
  3. আপনি যেসব অঞ্চলে এসএমএস মেসেজ পাঠাতে দিতে বা দিতে চান না, সেইসব অঞ্চলের জন্য একটি নীতি সেট করুন। এসএমএস অঞ্চল সংক্রান্ত নীতি সেট করলে, আপনার অ্যাপকে এসএমএস অপব্যবহার থেকে রক্ষা করতে সাহায্য করতে পারে। নতুন প্রোজেক্টের ক্ষেত্রে, ডিফল্ট নীতি কোনও অঞ্চলকে অনুমতি দেয় না।
    1. Firebase কনসোলে, নিরাপত্তা > অনুমোদন > সেটিংস ট্যাব বিকল্পে যান।
    2. এসএমএস অঞ্চল নীতি বিভাগে, আপনার এসএমএস অঞ্চল নীতি সেট-আপ করুন।
  4. আপনি আগে থেকে করে না থাকলে, আপনার অ্যাপের ডোমেনকে অনুমোদন দিন:
    1. Firebase কনসোলে, নিরাপত্তা > অনুমোদন > সেটিংস ট্যাব বিকল্পে যান।
    2. অনুমোদিত ডোমেন বিভাগে, ডোমেন যোগ করুন বিকল্পে ক্লিক করুন এবং আপনার ডোমেন যোগ করুন।

    মনে রাখবেন, ফোন যাচাইকরণের উদ্দেশ্যে হোস্ট করা ডোমেন হিসেবে লোকালহোস্ট অনুমোদিত নয়।

reCAPTCHA যাচাইকারী সেট-আপ করা

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

আপনাকে ম্যানুয়ালি reCAPTCHA ক্লায়েন্ট সেট-আপ করতে হবে না; আপনি Firebase SDK-এর RecaptchaVerifier অবজেক্ট ব্যবহার করলে, Firebase অটোমেটিক প্রয়োজনীয় ক্লায়েন্ট কী ও সিক্রেট তৈরি ও ম্যানেজ করে।

RecaptchaVerifier অবজেক্ট ইনভিজিবল reCAPTCHA-এর সাথে কাজ করে, যা প্রায়শই ব্যবহারকারীর কোনও অ্যাকশন ছাড়াই ব্যবহারকারীকে যাচাই করতে পারে, সেইসাথে reCAPTCHA উইজেটও কাজ করে, যা সফলভাবে সম্পূর্ণ করার জন্য সবসময় ব্যবহারকারীর ইন্টার‍্যাকশন প্রয়োজন হয়।

reCAPTCHA রেন্ডার করার আগে Auth ইনস্ট্যান্সে ভাষা কোড আপডেট করে, ব্যবহারকারীর পছন্দ অনুযায়ী অন্তর্নিহিত রেন্ডার করা reCAPTCHA-কে লোকালাইজ করা যেতে পারে। যাচাইকরণ কোড সহ ব্যবহারকারীকে পাঠানো এসএমএস মেসেজের ক্ষেত্রেও উপরে উল্লিখিত লোকালাইজেশন প্রযোজ্য হবে।

Web

import { getAuth } from "firebase/auth";

const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// auth.useDeviceLanguage();

Web

firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

অদৃশ্য reCAPTCHA ব্যবহার করা

অদৃশ্য reCAPTCHA ব্যবহার করতে, size প্যারামিটারকে invisible হিসেবে সেট করে একটি RecaptchaVerifier অবজেক্ট তৈরি করুন এবং আপনার সাইন-ইন ফর্ম জমা দেওয়া বোতামের ID নির্দিষ্ট করুন। যেমন:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'sign-in-button', {
  'size': 'invisible',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    onSignInSubmit();
  }
});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
  'size': 'invisible',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    onSignInSubmit();
  }
});

reCAPTCHA উইজেট ব্যবহার করা

দৃশ্যমান reCAPTCHA উইজেট ব্যবহার করতে, উইজেটটি রাখার জন্য আপনার পৃষ্ঠায় একটি এলিমেন্ট তৈরি করুন এবং তারপরে একটি RecaptchaVerifier অবজেক্ট তৈরি করুন, এটি করার সময় কন্টেনারের আইডি নির্দিষ্ট করুন। যেমন:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', {});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');

ঐচ্ছিক: reCAPTCHA প্যারামিটার নির্দিষ্ট করুন

আপনি ঐচ্ছিকভাবে RecaptchaVerifier অবজেক্টে কলব্যাক ফাংশন সেট করতে পারেন, যা ব্যবহারকারী reCAPTCHA সমাধান করলে বা ব্যবহারকারী ফর্ম জমা দেওয়ার আগে reCAPTCHA-এর মেয়াদ শেষ হয়ে গেলে কল করা হয়:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', {
  'size': 'normal',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', {
  'size': 'normal',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
});

ঐচ্ছিক: reCAPTCHA প্রি-রেন্ডার করা

আপনি সাইন-ইন করার অনুরোধ জমা দেওয়ার আগে reCAPTCHA প্রি-রেন্ডার করতে চাইলে, render:

Web

recaptchaVerifier.render().then((widgetId) => {
  window.recaptchaWidgetId = widgetId;
});

Web

recaptchaVerifier.render().then((widgetId) => {
  window.recaptchaWidgetId = widgetId;
});

render সমাধান হয়ে গেলে, আপনি reCAPTCHA-এর উইজেট আইডি পাবেন, যা আপনি reCAPTCHA API-তে কল করতে ব্যবহার করতে পারবেন:

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

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

ফোন নম্বর দিয়ে সাইন-ইন শুরু করতে, ব্যবহারকারীকে এমন একটি ইন্টারফেস দেখান যা তাকে ফোন নম্বর দিতে প্রম্পট করে এবং তারপর Firebase-কে ব্যবহারকারীর ফোনে এসএমএস পাঠিয়ে যাচাইকরণ কোড পাঠানোর অনুরোধ করতে signInWithPhoneNumber কল করুন:

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

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

  2. signInWithPhoneNumber-কে কল করুন, ব্যবহারকারীর ফোন নম্বর এবং আপনি আগে তৈরি করা RecaptchaVerifier-টি সেটিকে দিন।

    Web

    import { getAuth, signInWithPhoneNumber } from "firebase/auth";
    
    const phoneNumber = getPhoneNumberFromUserInput();
    const appVerifier = window.recaptchaVerifier;
    
    const auth = getAuth();
    signInWithPhoneNumber(auth, phoneNumber, appVerifier)
        .then((confirmationResult) => {
          // SMS sent. Prompt user to type the code from the message, then sign the
          // user in with confirmationResult.confirm(code).
          window.confirmationResult = confirmationResult;
          // ...
        }).catch((error) => {
          // Error; SMS not sent
          // ...
        });

    Web

    const phoneNumber = getPhoneNumberFromUserInput();
    const appVerifier = window.recaptchaVerifier;
    firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
        .then((confirmationResult) => {
          // SMS sent. Prompt user to type the code from the message, then sign the
          // user in with confirmationResult.confirm(code).
          window.confirmationResult = confirmationResult;
          // ...
        }).catch((error) => {
          // Error; SMS not sent
          // ...
        });
    signInWithPhoneNumber কোনও সমস্যার সম্মুখীন হলে, reCAPTCHA রিসেট করুন যাতে ব্যবহারকারী আবার চেষ্টা করতে পারেন:
    grecaptcha.reset(window.recaptchaWidgetId);
    
    // Or, if you haven't stored the widget ID:
    window.recaptchaVerifier.render().then(function(widgetId) {
      grecaptcha.reset(widgetId);
    });

signInWithPhoneNumber পদ্ধতি ব্যবহারকারীকে reCAPTCHA চ্যালেঞ্জ দেয় এবং ব্যবহারকারী চ্যালেঞ্জে উত্তীর্ণ হলে, অনুরোধ করে যে Firebase Authentication ব্যবহারকারীর ফোনে যাচাইকরণ কোড সহ একটি এসএমএস মেসেজ পাঠানো হোক।

যাচাইকরণ কোড দিয়ে ব্যবহারকারীকে সাইন-ইন করানো

signInWithPhoneNumber কল করার পরে, ব্যবহারকারীকে এসএমএসে পাওয়া যাচাইকরণ কোডটি লিখতে বলুন। তারপরে, ব্যবহারকারীকে সাইন-ইন করান signInWithPhoneNumber-এর ফুলফিলমেন্ট হ্যান্ডলারকে (অর্থাৎ, এর then ব্লক) পাস করা ConfirmationResult অবজেক্টের confirm পদ্ধতিতে কোড পাস করে। যেমন:

Web

const code = getCodeFromUserInput();
confirmationResult.confirm(code).then((result) => {
  // User signed in successfully.
  const user = result.user;
  // ...
}).catch((error) => {
  // User couldn't sign in (bad verification code?)
  // ...
});

Web

const code = getCodeFromUserInput();
confirmationResult.confirm(code).then((result) => {
  // User signed in successfully.
  const user = result.user;
  // ...
}).catch((error) => {
  // User couldn't sign in (bad verification code?)
  // ...
});

confirm-এ কল করা গেলে, ব্যবহারকারী সফলভাবে সাইন-ইন করেছেন।

অন্তর্বর্তী AuthCredential অবজেক্ট পাওয়া

ব্যবহারকারীর অ্যাকাউন্টের জন্য AuthCredential অবজেক্ট পেতে হলে, কনফার্মেশন ফলাফল থেকে যাচাইকরণ কোড এবং যাচাইকরণ কোডটি confirm-কে কল করার পরিবর্তে PhoneAuthProvider.credential-এ পাস করুন:

var credential = firebase.auth.PhoneAuthProvider.credential(confirmationResult.verificationId, code);

তারপরে, আপনি ক্রেডেনশিয়াল ব্যবহার করে ব্যবহারকারীকে সাইন-ইন করতে দিতে পারবেন:

firebase.auth().signInWithCredential(credential);

কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা

আপনি ডেভেলপমেন্টের জন্য Firebase কনসোল ব্যবহার করে কাল্পনিক ফোন নম্বর সেট-আপ করতে পারবেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করলে এইসব সুবিধা পাওয়া যায়:

  • আপনার ব্যবহার সংক্রান্ত কোটা খরচ না করেই ফোন নম্বর যাচাইকরণ পরীক্ষা করুন।
  • প্রকৃত এসএমএস মেসেজ না পাঠিয়ে ফোন নম্বর যাচাইকরণ পরীক্ষা করুন।
  • থ্রটল না হয়ে একই ফোন নম্বর দিয়ে পরপর পরীক্ষা চালান। এটি App Store-এ পর্যালোচনা করার সময় প্রত্যাখ্যান হওয়ার ঝুঁকি কমায়, যদি পর্যালোচক পরীক্ষার জন্য একই ফোন নম্বর ব্যবহার করেন।
  • ডেভেলপমেন্ট এনভায়রনমেন্টে কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই সহজেই পরীক্ষা করুন, যেমন Google Play পরিষেবা ছাড়াই iOS সিমুলেটর বা Android এমুলেটরে ডেভেলপ করার ক্ষমতা।
  • প্রোডাকশন এনভায়রনমেন্টে আসল ফোন নম্বরে সাধারণত প্রয়োগ করা নিরাপত্তা চেক দ্বারা ব্লক না হয়েই ইন্টিগ্রেশন টেস্ট লেখা।

কাল্পনিক ফোন নম্বরকে এইসব শর্ত পূরণ করতে হবে:

  1. নিশ্চিত করুন যে আপনি এমন ফোন নম্বর ব্যবহার করছেন যা সত্যিই কাল্পনিক এবং আগে থেকেই নেই। Firebase Authentication আপনাকে আসল ব্যবহারকারীদের ব্যবহার করা আগে থেকে থাকা ফোন নম্বরকে টেস্ট নম্বর হিসেবে সেট করতে দেয় না। একটি বিকল্প হল, মার্কিন যুক্তরাষ্ট্রের টেস্ট ফোন নম্বর হিসেবে 555 প্রিফিক্সযুক্ত নম্বর ব্যবহার করা, যেমন: +1 650-555-3434
  2. দৈর্ঘ্য ও অন্যান্য সীমাবদ্ধতার জন্য ফোন নম্বরকে সঠিকভাবে ফর্ম্যাট করতে হবে। সেগুলি এখনও একজন আসল ব্যবহারকারীর ফোন নম্বরের মতো একই যাচাইকরণ প্রক্রিয়ার মধ্য দিয়ে যাবে।
  3. আপনি ডেভেলপমেন্টের জন্য সর্বাধিক ১০টি ফোন নম্বর যোগ করতে পারবেন।
  4. এমন টেস্ট ফোন নম্বর/কোড ব্যবহার করুন যা সহজে অনুমান করা যায় না এবং সেগুলি ঘনঘন পরিবর্তন করুন।

কাল্পনিক ফোন নম্বর ও যাচাইকরণ কোড তৈরি করা

  1. Firebase কনসোলে গিয়ে নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
  2. সাইন-ইন পদ্ধতি ট্যাবে, ফোন সাইন-ইন পরিষেবা প্রদানকারীকে চালু করুন যদি আপনি আগেই না করে থাকেন।
  3. টেস্টিংয়ের জন্য ফোন নম্বর বিভাগটি বড় করুন।
  4. আপনি যে ফোন নম্বরটি পরীক্ষা করতে চান সেটি দিন, যেমন: +1 650-555-3434.
  5. সেই নির্দিষ্ট নম্বরের জন্য ৬-সংখ্যার যাচাইকরণ কোড দিন, যেমন: 654321.
  6. প্রতিটি নম্বরের জন্য যোগ করুন বিকল্পে ক্লিক করুন। প্রয়োজন হলে, আপনি ফোন নম্বর ও এর কোড মুছে দিতে পারেন। এর জন্য সংশ্লিষ্ট সারির উপর মাউস নিয়ে গিয়ে 'ট্র্যাশ আইকন' বিকল্পে ক্লিক করুন।

ম্যানুয়াল টেস্টিং

আপনি সরাসরি নিজের অ্যাপ্লিকেশনে কাল্পনিক ফোন নম্বর ব্যবহার করা শুরু করতে পারবেন। এর ফলে, কোটা সংক্রান্ত সমস্যা বা থ্রটলিং ছাড়াই ডেভেলপমেন্টের সময় আপনি ম্যানুয়াল টেস্টিং করতে পারবেন। এছাড়াও, Google Play পরিষেবা ইনস্টল না করেই আপনি সরাসরি iOS সিমুলেটর বা Android এমুলেটর থেকে পরীক্ষা করতে পারবেন।

আপনি কাল্পনিক ফোন নম্বর দিয়ে যাচাইকরণ কোড পাঠালে, কোনও আসল এসএমএস পাঠানো হয় না। পরিবর্তে, সাইন-ইন সম্পূর্ণ করতে আপনাকে আগে কনফিগার করা যাচাইকরণ কোডটি দিতে হবে।

সাইন-ইন প্রসেস সম্পূর্ণ হলে, সেই ফোন নম্বর দিয়ে একটি Firebase ব্যবহারকারী তৈরি করা হয়। এই ব্যবহারকারীর আচরণ ও প্রপার্টি আসল ফোন নম্বর ব্যবহারকারীর মতো এবং তিনি একই পদ্ধতিতে Realtime Database/Cloud Firestore ও অন্যান্য পরিষেবা অ্যাক্সেস করতে পারেন। এই প্রসেস চলাকালীন তৈরি হওয়া আইডি টোকেনে আসল ফোন নম্বর ব্যবহারকারীর মতো একই সিগনেচার থাকে।

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

ইন্টিগ্রেশন টেস্টিং

ম্যানুয়াল টেস্টিং ছাড়াও, Firebase Authentication ফোন নম্বর যাচাইকরণ টেস্টিংয়ের জন্য ইন্টিগ্রেশন টেস্ট লেখার ব্যাপারে সাহায্য করতে API প্রদান করে। এইসব API, iOS-এ ওয়েব ও সাইলেন্ট পুশ বিজ্ঞপ্তিতে reCAPTCHA প্রয়োজনীয়তা বন্ধ করে অ্যাপ যাচাইকরণ বন্ধ করে দেয়। এর ফলে এই ফ্লোতে অটোমেশন টেস্টিং করা সম্ভব হয় এবং তা প্রয়োগ করা সহজ হয়। এছাড়াও, এগুলি Android-এ ইনস্ট্যান্ট যাচাইকরণ ফ্লো পরীক্ষা করার সুবিধা প্রদান করতে সাহায্য করে।

ওয়েবে, firebase.auth.RecaptchaVerifier রেন্ডার করার আগে appVerificationDisabledForTesting-কে true হিসেবে সেট করুন। এটি reCAPTCHA অটোমেটিক সমাধান করে, ফলে আপনাকে এটি ম্যানুয়ালি সমাধান না করেই ফোন নম্বর যাচাই করার প্রসেস সম্পূর্ণ করতে পারবেন। মনে রাখবেন যে reCAPTCHA বন্ধ করা থাকলেও, কাল্পনিক নয় এমন ফোন নম্বর ব্যবহার করে সাইন-ইন সম্পূর্ণ করা যাবে না। এই API-এর সাথে শুধুমাত্র কাল্পনিক ফোন নম্বর ব্যবহার করা যাবে।

// Turn off phone auth app verification.
firebase.auth().settings.appVerificationDisabledForTesting = true;

var phoneNumber = "+16505554567";
var testVerificationCode = "123456";

// This will render a fake reCAPTCHA as appVerificationDisabledForTesting is true.
// This will resolve after rendering without app verification.
var appVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
// signInWithPhoneNumber will call appVerifier.verify() which will resolve with a fake
// reCAPTCHA response.
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
    .then(function (confirmationResult) {
      // confirmationResult can resolve with the fictional testVerificationCode above.
      return confirmationResult.confirm(testVerificationCode)
    }).catch(function (error) {
      // Error; SMS not sent
      // ...
    });

অ্যাপ যাচাইকরণ বন্ধ করা থাকলে, দৃশ্যমান ও অদৃশ্য মক reCAPTCHA অ্যাপ যাচাইকারী আলাদা আলাদাভাবে আচরণ করে: বন্ধ করা থাকলে:

  • দৃশ্যমান reCAPTCHA: দৃশ্যমান reCAPTCHA appVerifier.render()-এর মাধ্যমে রেন্ডার করা হলে, এটি অটোমেটিক এক সেকেন্ডের ভগ্নাংশ বিলম্বের পরে নিজেই সমাধান হয়ে যায়। এটি হল, রেন্ডার করার সাথে সাথেই ব্যবহারকারীর reCAPTCHA-তে ক্লিক করার সমতুল্য। reCAPTCHA উত্তর কিছু সময় পরে মেয়াদ শেষ হয়ে যাবে এবং তারপরে আবার অটোমেটিক সমাধান হয়ে যাবে।
  • অদৃশ্য reCAPTCHA: অদৃশ্য reCAPTCHA রেন্ডার করার সময় অটোমেটিক সমাধান হয় না, পরিবর্তে appVerifier.verify()কল করার সময় বা reCAPTCHA-এর বোতাম অ্যাঙ্করে ক্লিক করার পরে কয়েক সেকেন্ডের বিলম্বের পরে এটি সমাধান হয়। একইভাবে, উত্তরটি কিছু সময় পরে মেয়াদ শেষ হয়ে যাবে এবং appVerifier.verify() কল করার পরে অথবা reCAPTCHA-র বোতাম অ্যাঙ্করে আবার ক্লিক করা হলে তবেই অটোমেটিক সমাধান হবে।

কোনও মক reCAPTCHA সমাধান করা হলে, প্রত্যাশিতভাবে সংশ্লিষ্ট কলব্যাক ফাংশন ফেক উত্তর সহ ট্রিগার করা হয়। এছাড়াও, মেয়াদ শেষ হওয়ার কলব্যাক নির্দিষ্ট করা থাকলে, মেয়াদ শেষ হওয়ার সময় এটি ট্রিগার করবে।

পরবর্তী ধাপ

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

  • আপনার অ্যাপে, ব্যবহারকারীর অনুমোদনের স্ট্যাটাস জানার জন্য সাজেস্ট করা পদ্ধতি হল, Auth অবজেক্টে একটি অবজ়ার্ভার সেট করা। আপনি তারপরে User অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল সংক্রান্ত তথ্য পেতে পারেন। ব্যবহারকারীদের ম্যানেজ করা দেখুন।

  • আপনার Firebase Realtime Database এবং Cloud Storage নিরাপত্তা বিধিতে, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারবেন।

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

কোনও ব্যবহারকারীকে সাইন-আউট করতে, signOut-এ কল করুন:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});