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

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

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

আপনি শুরু করার আগে

আপনি যদি ইতিমধ্যে না করে থাকেন, তাহলে Firebase কনসোল থেকে আপনার জাভাস্ক্রিপ্ট প্রজেক্টে Firebase যোগ করুন-এ বর্ণিত প্রাথমিক স্নিপেটটি আপনার প্রকল্পে অনুলিপি করুন।

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

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

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

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

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

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

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

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

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

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

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

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 ব্যবহার করতে, আপনার সাইন-ইন ফর্ম জমা দেয় এমন বোতামটির আইডি নির্দিষ্ট করে invisible সেট করা size প্যারামিটার সহ একটি RecaptchaVerifier অবজেক্ট তৈরি করুন৷ যেমন:

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 অবজেক্ট তৈরি করুন, যখন আপনি এটি করবেন তখন কন্টেইনারটির ID উল্লেখ করুন৷ যেমন:

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. ব্যবহারকারীর ফোন নম্বর পান।

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

  2. Call 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 ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড সহ একটি SMS বার্তা পাঠাতে অনুরোধ করে।

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

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

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 কনসোলের মাধ্যমে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:

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

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

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

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

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

ম্যানুয়াল পরীক্ষা

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

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

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

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

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

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

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

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

  • আপনার অ্যাপে, আপনার ব্যবহারকারীর প্রমাণীকরণের স্থিতি জানার প্রস্তাবিত উপায় হল 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.
});
,

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

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

আপনি শুরু করার আগে

আপনি যদি ইতিমধ্যে না করে থাকেন, তাহলে Firebase কনসোল থেকে আপনার জাভাস্ক্রিপ্ট প্রজেক্টে Firebase যোগ করুন-এ বর্ণিত প্রাথমিক স্নিপেটটি আপনার প্রকল্পে অনুলিপি করুন।

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

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

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

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

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

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

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

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

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

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

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

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 ব্যবহার করতে, আপনার সাইন-ইন ফর্ম জমা দেয় এমন বোতামটির আইডি নির্দিষ্ট করে invisible সেট করা size প্যারামিটার সহ একটি RecaptchaVerifier অবজেক্ট তৈরি করুন৷ যেমন:

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 অবজেক্ট তৈরি করুন, যখন আপনি এটি করবেন তখন কন্টেইনারটির ID উল্লেখ করুন৷ যেমন:

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. ব্যবহারকারীর ফোন নম্বর পান।

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

  2. Call 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 ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড সহ একটি SMS বার্তা পাঠাতে অনুরোধ করে।

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

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

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 কনসোলের মাধ্যমে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:

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

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

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

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

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

ম্যানুয়াল পরীক্ষা

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

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

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

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

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

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

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

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

  • আপনার অ্যাপে, আপনার ব্যবহারকারীর প্রমাণীকরণের স্থিতি জানার প্রস্তাবিত উপায় হল 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.
});
,

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

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

আপনি শুরু করার আগে

আপনি যদি ইতিমধ্যে না করে থাকেন, তাহলে Firebase কনসোল থেকে আপনার জাভাস্ক্রিপ্ট প্রজেক্টে Firebase যোগ করুন-এ বর্ণিত প্রাথমিক স্নিপেটটি আপনার প্রকল্পে অনুলিপি করুন।

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

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

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

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

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

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

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

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

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

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

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

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 ব্যবহার করতে, আপনার সাইন-ইন ফর্ম জমা দেয় এমন বোতামটির আইডি নির্দিষ্ট করে invisible সেট করা size প্যারামিটার সহ একটি RecaptchaVerifier অবজেক্ট তৈরি করুন৷ যেমন:

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 অবজেক্ট তৈরি করুন, যখন আপনি এটি করবেন তখন কন্টেইনারটির ID উল্লেখ করুন৷ যেমন:

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. ব্যবহারকারীর ফোন নম্বর পান।

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

  2. Call 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 ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড সহ একটি SMS বার্তা পাঠাতে অনুরোধ করে।

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

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

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 কনসোলের মাধ্যমে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:

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

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

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

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

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

ম্যানুয়াল পরীক্ষা

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

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

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

আরেকটি বিকল্প হ'ল আপনি যদি অ্যাক্সেসকে আরও সীমাবদ্ধ করতে চান তবে এই ব্যবহারকারীদের উপর কাস্টম দাবির মাধ্যমে একটি পরীক্ষার ভূমিকা সেট করা

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

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

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

// 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
      // ...
    });

দৃশ্যমান এবং অদৃশ্য মক রেকাপ্টচা অ্যাপ্লিকেশন যাচাইকারীগুলি যখন অ্যাপ্লিকেশন যাচাইকরণ অক্ষম করা হয় তখন আলাদা আচরণ করে:

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

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

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

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

  • আপনার অ্যাপ্লিকেশনগুলিতে, আপনার ব্যবহারকারীর আউথ স্ট্যাটাসটি জানার প্রস্তাবিত উপায় হ'ল 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.
});
,

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

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

আপনি শুরু করার আগে

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

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

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

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

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

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

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

Recaptcha যাচাইকারী সেট আপ করুন

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

আপনার ম্যানুয়ালি একটি রেকাপ্টচা ক্লায়েন্ট সেট আপ করার দরকার নেই; আপনি যখন ফায়ারবেস এসডিকে RecaptchaVerifier অবজেক্টটি ব্যবহার করেন, ফায়ারবেস স্বয়ংক্রিয়ভাবে কোনও প্রয়োজনীয় ক্লায়েন্ট কী এবং গোপনীয়তা তৈরি করে এবং পরিচালনা করে।

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

অন্তর্নিহিত রেন্ডারড রেকাপ্টচাকে রেন্ডার্টচাকে রেন্ডার করার আগে এথ ইনস্ট্যান্সে ভাষা কোড আপডেট করে ব্যবহারকারীর পছন্দকে স্থানীয়করণ করা যেতে পারে। পূর্বোক্ত স্থানীয়করণ যাচাইকরণ কোড সহ ব্যবহারকারীকে প্রেরিত এসএমএস বার্তায়ও প্রযোজ্য।

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 ব্যবহার করুন

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

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 উইজেট ব্যবহার করুন

দৃশ্যমান রেকাপ্টচা উইজেটটি ব্যবহার করতে, উইজেটটি ধারণ করার জন্য আপনার পৃষ্ঠায় একটি উপাদান তৈরি করুন এবং তারপরে আপনি যখন এটি করবেন তখন ধারকটির আইডি নির্দিষ্ট করে একটি 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');

Ption চ্ছিক: recaptcha পরামিতি নির্দিষ্ট করুন

ব্যবহারকারী যখন রিকাপ্টচা বা রেকাপ্টচাকে সমাধান করে তখন ব্যবহারকারী ফর্মটি জমা দেওয়ার আগে আপনি RecaptchaVerifier ফাংশনগুলি rec ুকিয়ে দিতে পারেন যা ব্যবহারকারী রিকাপ্টচা বা রেকাপ্টচা মেয়াদ শেষ হয়:

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.
    // ...
  }
});

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

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

Web

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

Web

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

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

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

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

ফোন নম্বর সাইন-ইন শুরু করার জন্য, ব্যবহারকারীকে এমন একটি ইন্টারফেস উপস্থাপন করুন যা তাদের ফোন নম্বর সরবরাহ করতে অনুরোধ করে এবং তারপরে ফায়ারবেস এসএমএসের মাধ্যমে ব্যবহারকারীর ফোনে একটি প্রমাণীকরণ কোড প্রেরণ করার জন্য অনুরোধ করার জন্য 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 কোনও ত্রুটির ফলস্বরূপ হয়, তবে ব্যবহারকারী আবার চেষ্টা করতে পারে: পুনরায় সেট করুন:
    grecaptcha.reset(window.recaptchaWidgetId);
    
    // Or, if you haven't stored the widget ID:
    window.recaptchaVerifier.render().then(function(widgetId) {
      grecaptcha.reset(widgetId);
    });

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

যাচাইকরণ কোড সহ ব্যবহারকারীকে সাইন ইন করুন

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

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 জন্য কলটি সফল হয় তবে ব্যবহারকারী সফলভাবে সাইন ইন করা হয়।

মধ্যবর্তী autcredential অবজেক্ট পান

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

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

তারপরে, আপনি শংসাপত্রের সাহায্যে ব্যবহারকারীকে সাইন ইন করতে পারেন:

firebase.auth().signInWithCredential(credential);

কাল্পনিক ফোন নম্বর সহ পরীক্ষা করুন

আপনি Firebase কনসোলের মাধ্যমে বিকাশের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর সহ পরীক্ষা করা এই সুবিধাগুলি সরবরাহ করে:

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

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

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

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

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

ম্যানুয়াল পরীক্ষা

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

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

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

আরেকটি বিকল্প হ'ল আপনি যদি অ্যাক্সেসকে আরও সীমাবদ্ধ করতে চান তবে এই ব্যবহারকারীদের উপর কাস্টম দাবির মাধ্যমে একটি পরীক্ষার ভূমিকা সেট করা

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

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

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

// 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
      // ...
    });

দৃশ্যমান এবং অদৃশ্য মক রেকাপ্টচা অ্যাপ্লিকেশন যাচাইকারীগুলি যখন অ্যাপ্লিকেশন যাচাইকরণ অক্ষম করা হয় তখন আলাদা আচরণ করে:

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

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

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

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

  • আপনার অ্যাপ্লিকেশনগুলিতে, আপনার ব্যবহারকারীর আউথ স্ট্যাটাসটি জানার প্রস্তাবিত উপায় হ'ল 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.
});