জাভাস্ক্রিপ্ট ব্যবহার করে একটি ফোন নম্বর দিয়ে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন, জাভাস্ক্রিপ্ট ব্যবহার করে ফোন নম্বর দিয়ে ফায়ারবেসের সাথে প্রমাণীকরণ করুন

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

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

শুরু করার আগে

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

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

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

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

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

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

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

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

reCAPTCHA ভেরিফায়ার সেট আপ করুন

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

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

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

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

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 ব্যবহার করতে, একটি RecaptchaVerifier অবজেক্ট তৈরি করুন যার size প্যারামিটারটি invisible এ সেট করা থাকবে এবং আপনার সাইন-ইন ফর্ম সাবমিট করে এমন বাটনটির 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-কে ব্যবহারকারীর ফোনে SMS-এর মাধ্যমে একটি অথেনটিকেশন কোড পাঠানোর অনুরোধ জানাতে 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 কনসোল ব্যবহার করে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করার নিম্নলিখিত সুবিধাগুলো রয়েছে:

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

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

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

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

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

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

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

আপনি যখন কাল্পনিক ফোন নম্বরটি দিয়ে ভেরিফিকেশন কোড পাঠান, তখন কোনো প্রকৃত এসএমএস পাঠানো হয় না। এর পরিবর্তে, সাইন ইন সম্পন্ন করার জন্য আপনাকে পূর্বে সেট করা ভেরিফিকেশন কোডটি প্রদান করতে হবে।

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

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

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

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

ওয়েবে, 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 : যখন appVerifier.render() এর মাধ্যমে দৃশ্যমান reCAPTCHA রেন্ডার করা হয়, তখন এটি এক সেকেন্ডের ভগ্নাংশ সময় পরে স্বয়ংক্রিয়ভাবে সমাধান হয়ে যায়। এটি রেন্ডার হওয়ার সাথে সাথেই ব্যবহারকারীর reCAPTCHA-তে ক্লিক করার সমতুল্য। reCAPTCHA প্রতিক্রিয়াটি কিছু সময় পরে মেয়াদোত্তীর্ণ হয়ে যাবে এবং তারপর আবার স্বয়ংক্রিয়ভাবে সমাধান হবে।
  • অদৃশ্য reCAPTCHA : অদৃশ্য reCAPTCHA রেন্ডারিংয়ের সময় স্বয়ংক্রিয়ভাবে সমাধান হয় না, বরং এটি appVerifier.verify() কল করার পর অথবা এক সেকেন্ডের ভগ্নাংশ সময় বিলম্বের পর reCAPTCHA-এর বাটন অ্যাঙ্করে ক্লিক করা হলে সমাধান হয়। একইভাবে, রেসপন্সটি কিছু সময় পর মেয়াদোত্তীর্ণ হয়ে যায় এবং শুধুমাত্র appVerifier.verify() কল করার পর অথবা reCAPTCHA-এর বাটন অ্যাঙ্করে পুনরায় ক্লিক করা হলেই স্বয়ংক্রিয়ভাবে সমাধান হয়।

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

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

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

  • আপনার অ্যাপগুলিতে, ব্যবহারকারীর অথেন্টিকেশন স্ট্যাটাস জানার জন্য প্রস্তাবিত উপায় হলো Auth অবজেক্টে একটি অবজারভার সেট করা। এরপর আপনি User অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারী ব্যবস্থাপনা (Manage Users) দেখুন।

  • আপনার Firebase Realtime Database and Cloud Storage Security Rules- এ, আপনি 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.
});