আপনার অ্যাপের সাথে Authentication এমুলেটর ব্যবহার করার আগে, নিশ্চিত করুন যে আপনি Firebase Local Emulator Suite সামগ্রিক কার্যপ্রবাহ বুঝতে পেরেছেন , এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করার পাশাপাশি এর CLI কমান্ডগুলো পর্যালোচনা করেছেন।
এই বিষয়টি ধরে নেয় যে আপনি প্রোডাকশনের জন্য Firebase Authentication সলিউশন তৈরিতে আগে থেকেই পরিচিত। প্রয়োজনে, আপনার প্ল্যাটফর্ম এবং অথেনটিকেশন কৌশলের সমন্বয়ের জন্য ডকুমেন্টেশন পর্যালোচনা করুন।
Authentication এমুলেটর দিয়ে আমি কী করতে পারি?
Authentication এমুলেটরটি Firebase Authentication সার্ভিসগুলোর একটি উচ্চ-মানের স্থানীয় এমুলেশন প্রদান করে, যা প্রোডাকশন Firebase Authentication থাকা বেশিরভাগ কার্যকারিতাই সরবরাহ করে। অ্যাপল প্ল্যাটফর্ম, অ্যান্ড্রয়েড এবং ওয়েব ফায়ারবেস এসডিকে-এর সাথে যুক্ত হয়ে এই এমুলেটরটি আপনাকে নিম্নলিখিত কাজগুলো করতে দেয়:
- ইমেল/পাসওয়ার্ড, ফোন নম্বর/এসএমএস, এসএমএস মাল্টি-ফ্যাক্টর এবং তৃতীয় পক্ষের (যেমন গুগল) পরিচয় প্রদানকারীর প্রমাণীকরণ পরীক্ষার জন্য অনুকৃত ব্যবহারকারী অ্যাকাউন্ট তৈরি, আপডেট এবং পরিচালনা করুন।
- অনুকরণ করা ব্যবহারকারীদের দেখুন এবং সম্পাদনা করুন
- প্রোটোটাইপ কাস্টম টোকেন প্রমাণীকরণ সিস্টেম
- এমুলেটর UI-এর লগস ট্যাবে প্রমাণীকরণ-সম্পর্কিত বার্তাগুলো পরীক্ষা করুন।
একটি ফায়ারবেস প্রজেক্ট বেছে নিন
Firebase Local Emulator Suite একটিমাত্র ফায়ারবেস প্রোজেক্টের প্রোডাক্টগুলোকে এমুলেট করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটরগুলো চালু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI-তে firebase use চালান। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রজেক্ট এবং ডেমো প্রজেক্টের এমুলেশন সমর্থন করে।
| প্রকল্পের ধরণ | বৈশিষ্ট্য | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| বাস্তব | একটি প্রকৃত Firebase প্রজেক্ট হলো সেটি যা আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টগুলিতে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, বা অন্য যেকোনো রিসোর্স যা আপনি সেই Firebase প্রজেক্টের জন্য সেট আপ করেছেন। | আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি সমর্থিত যেকোনো বা সমস্ত প্রোডাক্টের জন্য এমুলেটর চালাতে পারেন। যেসব প্রোডাক্ট আপনি এমুলেট করছেন না, সেগুলোর ক্ষেত্রে আপনার অ্যাপ ও কোড লাইভ রিসোর্সের (যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করবে। |
| ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টে কোনো বাস্তব ফায়ারবেস কনফিগারেশন বা লাইভ রিসোর্স থাকে না। এই প্রজেক্টগুলো সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে ব্যবহার করা হয়। ডেমো প্রজেক্টগুলোর আইডির শুরুতে | ডেমো ফায়ারবেস প্রজেক্ট নিয়ে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরের সাথেই ইন্টারঅ্যাক্ট করে। যদি আপনার অ্যাপ এমন কোনো রিসোর্সের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য কোনো এমুলেটর চলছে না, তাহলে সেই কোডটি ব্যর্থ হবে। |
আমরা আপনাকে যথাসম্ভব ডেমো প্রজেক্ট ব্যবহার করার পরামর্শ দিই। এর সুবিধাগুলোর মধ্যে রয়েছে:
- সেটআপ করা সহজ, কারণ কোনো Firebase প্রজেক্ট তৈরি না করেই এমুলেটরগুলো চালানো যায়।
- আরও শক্তিশালী সুরক্ষা, কারণ যদি আপনার কোড ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ব্যবহার করে, তাহলেও ডেটা পরিবর্তন, ব্যবহার এবং বিলিং-এর কোনো সম্ভাবনা থাকে না।
- উন্নততর অফলাইন সাপোর্ট, কারণ আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।
এমুলেটরের সাথে যোগাযোগ করার জন্য আপনার অ্যাপটিকে প্রস্তুত করুন।
অ্যান্ড্রয়েড, আইওএস এবং ওয়েব এসডিকে
Authentication এমুলেটরের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার ইন-অ্যাপ কনফিগারেশন বা টেস্ট ক্লাসগুলো নিম্নরূপভাবে সেট আপ করুন।
Kotlin
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
সুইফট
Auth.auth().useEmulator(withHost:"127.0.0.1", port:9099)
Web
import { getAuth, connectAuthEmulator } from "firebase/auth"; const auth = getAuth(); connectAuthEmulator(auth, "http://127.0.0.1:9099");
Web
const auth = firebase.auth(); auth.useEmulator("http://127.0.0.1:9099");
Authentication এবং Cloud Functions অথবা Cloud Firestore বা Realtime Database জন্য Firebase Security Rules মধ্যেকার ইন্টারঅ্যাকশনের প্রোটোটাইপ তৈরি ও পরীক্ষা করার জন্য কোনো অতিরিক্ত সেটআপের প্রয়োজন নেই। যখন Authentication এমুলেটরটি কনফিগার করা থাকে এবং অন্যান্য এমুলেটরগুলো চালু থাকে, তখন সেগুলো স্বয়ংক্রিয়ভাবে একসাথে কাজ করে।
Admin SDK
যখন FIREBASE_AUTH_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবলটি সেট করা থাকে, তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Authentication emulator-এর সাথে সংযুক্ত হয়।
export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"
উল্লেখ্য যে, Cloud Functions এমুলেটরটি Authentication এমুলেটর সম্পর্কে স্বয়ংক্রিয়ভাবে অবগত থাকে, তাই Cloud Functions এবং Authentication এমুলেটরের মধ্যে ইন্টিগ্রেশন পরীক্ষা করার সময় আপনি এই ধাপটি এড়িয়ে যেতে পারেন। Cloud Functions -এ Admin SDK এর জন্য এনভায়রনমেন্ট ভেরিয়েবলটি স্বয়ংক্রিয়ভাবে সেট হয়ে যাবে।
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে, Firebase Admin SDK লোকাল ডেভেলপমেন্ট এবং টেস্টিং সহজ করার জন্য Authentication এমুলেটর দ্বারা ইস্যু করা আনসাইনড আইডি টোকেন এবং সেশন কুকি গ্রহণ করবে (যথাক্রমে verifyIdToken এবং createSessionCookie মেথডের মাধ্যমে)। অনুগ্রহ করে নিশ্চিত করুন যেন প্রোডাকশনে এনভায়রনমেন্ট ভেরিয়েবলটি সেট করা না হয় ।
আপনি যদি আপনার Admin SDK কোডকে অন্য কোনো পরিবেশে চলমান একটি শেয়ার্ড এমুলেটরের সাথে সংযোগ করতে চান, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রজেক্ট আইডি উল্লেখ করতে হবে। আপনি সরাসরি initializeApp এ একটি প্রজেক্ট আইডি পাস করতে পারেন অথবা GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
নোড.জেএস অ্যাডমিন এসডিকে
admin.initializeApp({ projectId: "your-project-id" });
পরিবেশগত পরিবর্তনশীল
export GCLOUD_PROJECT="your-project-id"
আইডি টোকেন
নিরাপত্তাজনিত কারণে, Authentication এমুলেটরটি স্বাক্ষরবিহীন আইডি টোকেন ইস্যু করে, যা শুধুমাত্র অন্যান্য ফায়ারবেস এমুলেটর অথবা কনফিগার করা থাকলে ফায়ারবেস অ্যাডমিন এসডিকে দ্বারা গৃহীত হয়। এই টোকেনগুলো প্রোডাকশন ফায়ারবেস সার্ভিস অথবা প্রোডাকশন মোডে চলমান ফায়ারবেস অ্যাডমিন এসডিকে দ্বারা প্রত্যাখ্যাত হবে (যেমন, উপরে বর্ণিত সেটআপ ধাপগুলো অনুসরণ না করলে এটিই ডিফল্ট আচরণ)।
এমুলেটরটি চালু করুন
আপনি Emulator Suite UI মাধ্যমে ইন্টারেক্টিভভাবে এবং এর স্থানীয় REST ইন্টারফেসের মাধ্যমে নন-ইন্টারেক্টিভভাবে Authentication এমুলেটরটি ব্যবহার করতে পারেন। নিম্নলিখিত বিভাগগুলিতে ইন্টারেক্টিভ এবং নন-ইন্টারেক্টিভ ব্যবহারের ক্ষেত্রগুলি আলোচনা করা হয়েছে।
Authentication এমুলেটর, এর REST ইন্টারফেস এবং Emulator Suite UI চালু করতে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
অনুকৃত ইমেল, ইমেল লিঙ্ক এবং বেনামী প্রমাণীকরণ
বেনামী প্রমাণীকরণের জন্য, আপনার অ্যাপ আপনার প্ল্যাটফর্মের ( iOS , Android , ওয়েব ) সাইন-ইন লজিক ব্যবহার করতে পারে।
ইমেল/পাসওয়ার্ড অথেনটিকেশনের জন্য, আপনি আপনার অ্যাপ থেকে Authentication SDK পদ্ধতি ব্যবহার করে, অথবা Emulator Suite UI ব্যবহার করে Authentication এমুলেটরে ইউজার অ্যাকাউন্ট যোগ করে প্রোটোটাইপিং শুরু করতে পারেন।
- Emulator Suite UI তে, অথেনটিকেশন ট্যাবে ক্লিক করুন।
- ব্যবহারকারী যোগ করুন বোতামটিতে ক্লিক করুন।
- ব্যবহারকারী অ্যাকাউন্ট তৈরির উইজার্ডটি অনুসরণ করুন এবং ইমেল প্রমাণীকরণের ক্ষেত্রগুলি পূরণ করুন।
একটি পরীক্ষামূলক ব্যবহারকারী তৈরি হয়ে গেলে, আপনার অ্যাপ আপনার প্ল্যাটফর্মের ( iOS , Android , web ) SDK লজিক ব্যবহার করে তাকে সাইন ইন এবং সাইন আউট করতে পারবে।
ইমেল ভেরিফিকেশন/ইমেল লিঙ্কের মাধ্যমে সাইন-ইন ফ্লো পরীক্ষা করার জন্য, এমুলেটরটি সেই টার্মিনালে একটি URL প্রিন্ট করে যেখানে firebase emulators:start চালানো হয়েছিল।
i To verify the email address customer@ex.com, follow this link:
http://127.0.0.1:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-keyযাচাইকরণ প্রক্রিয়াটি অনুকরণ করতে আপনার ব্রাউজারে লিঙ্কটি পেস্ট করুন এবং যাচাইকরণ সফল হয়েছে কিনা তা পরীক্ষা করুন।
{
"authEmulator": {
"success": "The email has been successfully verified.",
"email": "customer@example.com"
}
}
পাসওয়ার্ড রিসেট পরীক্ষা করার জন্য, এমুলেটরটি টার্মিনালে একটি newPassword প্যারামিটারসহ (যা আপনি প্রয়োজন অনুযায়ী পরিবর্তন করতে পারেন) একটি অনুরূপ URL প্রিন্ট করে।
http://127.0.0.1:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORDঅ-ইন্টারেক্টিভ পরীক্ষা
ইমেল/পাসওয়ার্ড ব্যবহারকারী অ্যাকাউন্টগুলি পরিচালনা করার জন্য Emulator Suite UI বা ক্লায়েন্ট কোড ব্যবহার করার পরিবর্তে, আপনি টেস্ট সেটআপ স্ক্রিপ্ট লিখতে পারেন যা REST API কল করে ব্যবহারকারী অ্যাকাউন্ট তৈরি ও মুছে ফেলে এবং এমুলেটরের ইমেল ভেরিফিকেশন URL-টি পূরণ করার জন্য আউট-অফ-ব্যান্ড ইমেল ভেরিফিকেশন কোড সংগ্রহ করে। এটি প্ল্যাটফর্ম এবং টেস্ট কোডকে আলাদা রাখে এবং আপনাকে কোনো রকম মিথস্ক্রিয়া ছাড়াই পরীক্ষা করার সুযোগ দেয়।
নন-ইন্টারেক্টিভ ইমেল এবং পাসওয়ার্ড টেস্ট ফ্লো-এর ক্ষেত্রে সাধারণ ক্রমটি নিম্নরূপ।
- Authentication signUp REST এন্ডপয়েন্ট ব্যবহার করে ব্যবহারকারী তৈরি করুন।
- পরীক্ষাগুলো সম্পন্ন করার জন্য ব্যবহারকারীদের ইমেল ও পাসওয়ার্ড ব্যবহার করে সাইন ইন করান।
- আপনার পরীক্ষার জন্য প্রযোজ্য হলে, এমুলেটর-নির্দিষ্ট REST এন্ডপয়েন্ট থেকে উপলব্ধ আউট-অফ-ব্যান্ড ইমেল যাচাইকরণ কোডগুলি সংগ্রহ করুন।
- ডেটা মুছে ফেলার জন্য এমুলেটর-নির্দিষ্ট REST এন্ডপয়েন্ট ব্যবহার করে ব্যবহারকারীর রেকর্ড ফ্লাশ করুন।
অনুকৃত ফোন/এসএমএস প্রমাণীকরণ
ফোন প্রমাণীকরণের জন্য, অথ এমুলেটর নিম্নলিখিত বিষয়গুলো সমর্থন করে না:
- reCAPTCHA এবং APN ফ্লো। একবার এমুলেটরের সাথে ইন্টারঅ্যাক্ট করার জন্য কনফিগার করা হয়ে গেলে, ক্লায়েন্ট SDK-গুলো ইন্টিগ্রেশন টেস্টিং ( iOS , Android , web )-এর জন্য বর্ণিত পদ্ধতির মতোই এই যাচাইকরণ পদ্ধতিগুলো নিষ্ক্রিয় করে দেয়।
- Firebase কনসোলে আগে থেকে কনফিগার করা কোড দিয়ে ফোন নম্বরগুলো পরীক্ষা করুন।
অন্যথায়, ক্লায়েন্ট কোডের ক্ষেত্রে, ফোন/এসএমএস প্রমাণীকরণ প্রক্রিয়াটি প্রোডাকশনের ( iOS , Android , web ) জন্য বর্ণিত প্রক্রিয়ার অনুরূপ।
Emulator Suite UI ব্যবহার করে:
- Emulator Suite UI তে, অথেনটিকেশন ট্যাবে ক্লিক করুন।
- ব্যবহারকারী যোগ করুন বোতামটিতে ক্লিক করুন।
- ব্যবহারকারী অ্যাকাউন্ট তৈরির উইজার্ডটি অনুসরণ করুন এবং ফোন প্রমাণীকরণের ক্ষেত্রগুলি পূরণ করুন।
তবে, ফোন অথেন্টিকেশন ফ্লো-এর ক্ষেত্রে, এমুলেটরটি কোনো টেক্সট মেসেজ ডেলিভারি করবে না, কারণ কোনো ক্যারিয়ারের সাথে যোগাযোগ করা এর আওতার বাইরে এবং লোকাল টেস্টিংয়ের জন্য সুবিধাজনক নয়! এর পরিবর্তে, এমুলেটরটি সেই কোডটি প্রিন্ট করে দেয় যা SMS-এর মাধ্যমে পাঠানো হতো, সেই একই টার্মিনালে যেখানে আপনি firebase emulators:start চালিয়েছেন; ব্যবহারকারীদের টেক্সট মেসেজ চেক করার বিষয়টি সিমুলেট করতে এই কোডটি অ্যাপে ইনপুট করুন।
অ-ইন্টারেক্টিভ পরীক্ষা
নন-ইন্টারেক্টিভ ফোন অথেন্টিকেশন পরীক্ষার জন্য, উপলব্ধ এসএমএস কোডগুলো পেতে Authentication এমুলেটর REST API ব্যবহার করুন। মনে রাখবেন, প্রতিবার ফ্লোটি শুরু করার সময় কোডটি ভিন্ন হয়।
সাধারণ ক্রমটি নিম্নরূপ।
- যাচাইকরণ প্রক্রিয়া শুরু করতে প্ল্যাটফর্মে
signInWithPhoneNumberলিখে কল করুন। - এমুলেটর-নির্দিষ্ট REST এন্ডপয়েন্ট ব্যবহার করে যাচাইকরণ কোডটি সংগ্রহ করুন।
- ভেরিফিকেশন কোডটি দিয়ে যথারীতি
confirmationResult.confirm(code)কল করুন।
মাল্টি-ফ্যাক্টর এসএমএস
Authentication এমুলেটরটি iOS , Android এবং ওয়েবের জন্য প্রোডাকশনে উপলব্ধ এসএমএস মাল্টি-ফ্যাক্টর অথেনটিকেশন (MFA) ফ্লো-এর প্রোটোটাইপিং এবং টেস্টিং সমর্থন করে।
যখন আপনি এমুলেটরে একজন মক ইউজার যোগ করেন, তখন আপনি এমএফএ (MFA) সক্রিয় করতে পারেন এবং এক বা একাধিক ফোন নম্বর কনফিগার করতে পারেন, যেগুলিতে সেকেন্ড ফ্যাক্টর এসএমএস বার্তা পাঠানো হবে। বার্তাগুলি সেই একই টার্মিনালে আউটপুট হয় যেখানে আপনি firebase emulators:start চালিয়েছেন, এবং REST ইন্টারফেস থেকে সেগুলি পাওয়া যায়।
অনুকৃত তৃতীয়-পক্ষ পরিচয় প্রদানকারী (IDP) প্রমাণীকরণ
Authentication এমুলেটর আপনাকে প্রোডাকশন কোডে কোনো পরিবর্তন না করেই আপনার iOS, Android বা ওয়েব অ্যাপে অনেক থার্ড-পার্টি অথেনটিকেশন ফ্লো পরীক্ষা করার সুযোগ দেয়। অথেনটিকেশন ফ্লো-এর উদাহরণের জন্য, আপনার অ্যাপে ব্যবহার করতে পারেন এমন বিভিন্ন প্রোভাইডার এবং প্ল্যাটফর্মের সমন্বয়ের ডকুমেন্টেশন দেখুন।
সাধারণত, আপনি দুটি উপায়ের যেকোনো একটি ব্যবহার করে প্রমাণীকরণের জন্য ফায়ারবেস এসডিকে ব্যবহার করতে পারেন:
- আপনার অ্যাপটি এসডিকে-কে সম্পূর্ণ প্রক্রিয়াটি শুরু থেকে শেষ পর্যন্ত পরিচালনা করতে দেয়, যার মধ্যে ক্রেডেনশিয়াল পুনরুদ্ধারের জন্য তৃতীয় পক্ষের আইডিপি প্রদানকারীদের সাথে সমস্ত যোগাযোগও অন্তর্ভুক্ত।
- আপনার অ্যাপটি কোনো তৃতীয় পক্ষের SDK ব্যবহার করে সেই প্রদানকারীর কাছ থেকে ম্যানুয়ালি ক্রেডেনশিয়াল সংগ্রহ করে এবং সেই ক্রেডেনশিয়ালগুলো Authentication SDK-এর কাছে পাঠিয়ে দেয়।
আবার, উপরের ডকুমেন্টেশন লিঙ্কটি দেখুন এবং আপনি যে ফ্লোটি—ফায়ারবেস এসডিকে-পরিচালিত বনাম ম্যানুয়াল ক্রেডেনশিয়াল পুনরুদ্ধার—ব্যবহার করতে চান, সেটির সাথে পরিচিত আছেন কিনা তা নিশ্চিত করুন। Authentication এমুলেটরটি উভয় পদ্ধতির টেস্টিং সমর্থন করে।
ফায়ারবেস এসডিকে-চালিত আইডিপি ফ্লো পরীক্ষা করা হচ্ছে
আপনার অ্যাপ যদি ইন্টারেক্টিভ টেস্টিংয়ের জন্য Microsoft, GitHub বা Yahoo-তে সাইন-ইন করার জন্য OAuthProvider মতো কোনো Firebase SDK এন্ড-টু-এন্ড ফ্লো ব্যবহার করে, তাহলে Authentication এমুলেটরটি সংশ্লিষ্ট সাইন-ইন পেজটির একটি স্থানীয় সংস্করণ পরিবেশন করে। এটি আপনাকে সেইসব ওয়েব অ্যাপ থেকে অথেনটিকেশন পরীক্ষা করতে সাহায্য করে, যেগুলো signinWithPopup বা signInWithRedirect মেথড কল করে। এই স্থানীয়ভাবে পরিবেশিত সাইন-ইন পেজটি মোবাইল অ্যাপেও দেখা যায়, যা আপনার প্ল্যাটফর্মের ওয়েবভিউ লাইব্রেরি দ্বারা রেন্ডার করা হয়।
ফ্লো অগ্রসর হওয়ার সাথে সাথে এমুলেটরটি প্রয়োজন অনুসারে নকল তৃতীয় পক্ষের ব্যবহারকারী অ্যাকাউন্ট এবং ক্রেডেনশিয়াল তৈরি করে।
ম্যানুয়াল পরিচয়পত্র পুনরুদ্ধারের মাধ্যমে আইডিপি প্রবাহ পরীক্ষা করা হচ্ছে
আপনি যদি 'ম্যানুয়াল' সাইন-ইন পদ্ধতি ব্যবহার করেন এবং আপনার প্ল্যাটফর্মের signInWithCredentials মেথডটি কল করেন, তাহলে যথারীতি আপনার অ্যাপটি কোনো আসল তৃতীয় পক্ষের সাইন-ইনের অনুরোধ করবে এবং তাদের ক্রেডেনশিয়াল সংগ্রহ করবে।
উল্লেখ্য যে, এই এমুলেটরটি শুধুমাত্র গুগল সাইন-ইন, অ্যাপল এবং অন্যান্য প্রোভাইডারদের থেকে প্রাপ্ত ক্রেডেনশিয়ালের জন্য signInWithCredential অথেনটিকেশন সমর্থন করে, যারা JSON ওয়েব টোকেন (JWT) হিসাবে বাস্তবায়িত আইডি টোকেন ব্যবহার করে। অ্যাক্সেস টোকেন (যেমন ফেসবুক বা টুইটারের দেওয়া টোকেন, যা JWT নয়) সমর্থিত নয়। এই ধরনের ক্ষেত্রে পরবর্তী বিভাগে একটি বিকল্প নিয়ে আলোচনা করা হয়েছে।
অ-ইন্টারেক্টিভ পরীক্ষা
নন-ইন্টারেক্টিভ টেস্টিং-এর একটি উপায় হলো এমুলেটর দ্বারা পরিবেশিত সাইন-ইন পেজে ব্যবহারকারীর ক্লিকগুলোকে স্বয়ংক্রিয় করা। ওয়েব অ্যাপের জন্য, WebDriver-এর মতো একটি কন্ট্রোল ইন্টারফেস ব্যবহার করুন। মোবাইলের জন্য, আপনার প্ল্যাটফর্মের UI টেস্ট টুলিং, যেমন Espresso বা Xcode ব্যবহার করুন।
বিকল্পভাবে, আপনি আপনার কোড আপডেট করে signInWithCredential ব্যবহার করতে পারেন (যেমন একটি কোড ব্রাঞ্চে) এবং আসল ক্রেডেনশিয়ালের পরিবর্তে অ্যাকাউন্টগুলোর জন্য মক আইডি টোকেনসহ একটি টোকেন অথেন্টিকেশন ফ্লো ব্যবহার করতে পারেন।
- আপনার কোডের যে অংশটি IDP থেকে idToken সংগ্রহ করে, সেটিকে রিওয়্যার করুন বা কমেন্ট আউট করে দিন; এর ফলে আপনার টেস্ট চলাকালীন আসল ইউজারনেম ও পাসওয়ার্ড ইনপুট করার প্রয়োজন হবে না এবং আপনার টেস্টগুলো IDP-এর API কোটা ও রেট লিমিট থেকে মুক্ত থাকবে।
- দ্বিতীয়ত,
signInWithCredentialএর জন্য টোকেনের পরিবর্তে একটি আক্ষরিক JSON স্ট্রিং ব্যবহার করুন। ওয়েব SDK-কে উদাহরণ হিসেবে ব্যবহার করে, আপনি কোডটি পরিবর্তন করে নিম্নরূপ করতে পারেন:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
'{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));
এমুলেটরের সাথে ব্যবহার করা হলে, এই কোডটি গুগলে foo@example.com ইমেইল ব্যবহারকারী একজনকে সফলভাবে প্রমাণীকরণ করবে। সাব-ফিল্ডটিকে একটি প্রাইমারি কী হিসেবে ভাবুন, যা যেকোনো স্ট্রিং-এ পরিবর্তন করে বিভিন্ন ব্যবহারকারীর সাইন-ইন প্রক্রিয়া অনুকরণ করা যায়। আপনি firebase.auth.GoogleAuthProvider , উদাহরণস্বরূপ, new firebase.auth.OAuthProvider('yahoo.com') অথবা আপনার অনুকরণ করতে চাওয়া অন্য যেকোনো প্রোভাইডার আইডি দিয়ে প্রতিস্থাপন করতে পারেন।
অনুকৃত কাস্টম টোকেন প্রমাণীকরণ
প্রোডাকশন Authentication ডকুমেন্টেশনে বর্ণিত পদ্ধতি অনুযায়ী, Authentication এমুলেটরটি সমর্থিত প্ল্যাটফর্মগুলিতে ` signInWithCustomToken মেথড কল করার মাধ্যমে কাস্টম JSON ওয়েব টোকেন ব্যবহার করে অথেন্টিকেশন পরিচালনা করে।
Authentication এমুলেটরটি প্রোডাকশন থেকে কীভাবে আলাদা
ফায়ারবেস Authentication এমুলেটরটি প্রোডাকশন প্রোডাক্টের অনেক বৈশিষ্ট্য অনুকরণ করে। তবে, যেহেতু যেকোনো ধরনের অথেনটিকেশন সিস্টেম একাধিক স্তরের (ডিভাইস, থার্ড-পার্টি প্রোভাইডার, ফায়ারবেস, ইত্যাদি) নিরাপত্তার উপর ব্যাপকভাবে নির্ভর করে, তাই এমুলেটরটির পক্ষে সমস্ত কার্যপ্রবাহ সঠিকভাবে পুনরায় তৈরি করা কঠিন।
ক্লাউড আইএএম
ফায়ারবেস এমুলেটর স্যুট চলার জন্য কোনো IAM-সম্পর্কিত আচরণ অনুকরণ বা অনুসরণ করার চেষ্টা করে না। এমুলেটরগুলো প্রদত্ত ফায়ারবেস নিরাপত্তা নিয়মগুলো মেনে চলে, কিন্তু যেসব ক্ষেত্রে সাধারণত IAM ব্যবহৃত হয়, যেমন ক্লাউড ফাংশন চালু করার সার্ভিস অ্যাকাউন্ট এবং তার ফলে অনুমতি নির্ধারণ করতে, সেসব ক্ষেত্রে এমুলেটরটি কনফিগারযোগ্য নয় এবং সরাসরি একটি লোকাল স্ক্রিপ্ট চালানোর মতোই আপনার ডেভেলপার মেশিনে থাকা বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্টটি ব্যবহার করবে।
মোবাইলে ইমেল লিঙ্কের মাধ্যমে সাইন-ইন করুন
যেহেতু মোবাইল প্ল্যাটফর্মে ইমেল লিঙ্কের মাধ্যমে সাইন-ইন করার জন্য ফায়ারবেস ডাইনামিক লিঙ্কের ওপর নির্ভর করতে হয়, তাই এই ধরনের সমস্ত লিঙ্ক পরিবর্তে (মোবাইল) ওয়েব প্ল্যাটফর্মে খোলা হবে।
তৃতীয় পক্ষের সাইন-ইন
তৃতীয় পক্ষের সাইন-ইন প্রক্রিয়ার জন্য, ফায়ারবেস Authentication টুইটার এবং গিটহাবের মতো তৃতীয় পক্ষের প্রদানকারীদের কাছ থেকে পাওয়া সুরক্ষিত ক্রেডেনশিয়ালের উপর নির্ভর করে।
Authentication এমুলেটরটি গুগল এবং অ্যাপলের মতো ওপেনআইডি কানেক্ট প্রদানকারীদের আসল ক্রেডেনশিয়াল গ্রহণ করে। ওপেনআইডি কানেক্ট নয় এমন প্রদানকারীদের ক্রেডেনশিয়াল সমর্থিত নয়।
ইমেল / এসএমএস সাইন-ইন
প্রোডাকশন অ্যাপে, ইমেল এবং এসএমএস সাইন-ইন ফ্লো একটি অ্যাসিঙ্ক্রোনাস অপারেশন, যেখানে ব্যবহারকারী একটি প্রাপ্ত মেসেজ চেক করে এবং সাইন-ইন ইন্টারফেসে একটি লগইন কোড প্রবেশ করায়। Authentication এমুলেটর কোনো ইমেল বা এসএমএস মেসেজ পাঠায় না, কিন্তু উপরে যেমন বর্ণনা করা হয়েছে, এটি লগইন কোড তৈরি করে এবং টেস্টিং-এ ব্যবহারের জন্য সেগুলোকে টার্মিনালে আউটপুট করে।
এমুলেটরটি নির্দিষ্ট লগইন কোডসহ পরীক্ষার ফোন নম্বর নির্ধারণ করার সুবিধা সমর্থন করে না, যেমনটি Firebase কনসোল ব্যবহার করে করা যায়।
কাস্টম টোকেন প্রমাণীকরণ
Authentication এমুলেটরটি কাস্টম টোকেনের সিগনেচার বা মেয়াদোত্তীর্ণতা যাচাই করে না। এর ফলে আপনি প্রোটোটাইপিং এবং টেস্টিং পরিস্থিতিতে নিজের হাতে তৈরি টোকেন ব্যবহার করতে এবং অনির্দিষ্টকালের জন্য টোকেন পুনরায় ব্যবহার করতে পারেন।
রেট লিমিটিং / অ্যান্টি-অ্যাবিউজ
Authentication এমুলেটরটি প্রোডাকশন রেট লিমিটিং বা অ্যান্টি-অ্যাবিউজ ফিচারগুলো প্রতিলিপি করে না।
ব্লকিং ফাংশন
প্রোডাকশনে, beforeCreate এবং beforeSignIn উভয় ইভেন্ট ট্রিগার হওয়ার পর ব্যবহারকারীদের তথ্য একবার স্টোরেজে লেখা হয়। তবে, প্রযুক্তিগত সীমাবদ্ধতার কারণে, Authentication এমুলেটর স্টোরে দুইবার লেখে—একবার ব্যবহারকারী তৈরির পর এবং আরেকবার সাইন-ইন করার পর। এর মানে হলো, নতুন ব্যবহারকারীদের জন্য আপনি Authentication এমুলেটরের beforeSignIn ইভেন্টে getAuth().getUser() সফলভাবে কল করতে পারলেও, প্রোডাকশনে তা করতে গেলে একটি এরর দেখা দেবে।
এরপর কী?
নির্বাচিত ভিডিও এবং বিস্তারিত নির্দেশনামূলক উদাহরণের জন্য, ফায়ারবেস এমুলেটর প্রশিক্ষণ প্লেলিস্টটি অনুসরণ করুন।
যেহেতু ট্রিগারড ফাংশনগুলো সাধারণত Authentication সাথে সমন্বিত থাকে, তাই ‘Run functions locally’ অংশে ক্লাউড ফাংশনস ফর ফায়ারবেস এমুলেটর সম্পর্কে আরও জানুন।