এই পৃষ্ঠায় Firebase Authentication ব্যবহারের সমস্যা সমাধানে সাহায্য এবং প্রায়শই জিজ্ঞাসিত প্রশ্নের উত্তর দেওয়া হয়েছে। আপনি যা খুঁজছেন তা যদি খুঁজে না পান বা অতিরিক্ত সাহায্যের প্রয়োজন হয়, তাহলে ফায়ারবেস সাপোর্টের সাথে যোগাযোগ করুন।
আপনার প্রজেক্টকে এসএমএস ট্র্যাফিক পাম্পিং এবং এপিআই অপব্যবহার থেকে সুরক্ষিত রাখতে নিম্নলিখিত পদক্ষেপগুলো গ্রহণ করুন:
একটি এসএমএস অঞ্চল নীতি নির্ধারণ করার কথা বিবেচনা করুন।
আপনার আঞ্চলিক এসএমএস ব্যবহারের পরিমাণ দেখুন ।
এমন অঞ্চলগুলো সন্ধান করুন যেখানে প্রেরিত এসএমএস-এর সংখ্যা খুব বেশি এবং যাচাইকৃত এসএমএস-এর সংখ্যা খুব কম (বা শূন্য)। যাচাইকৃত/প্রেরিত-এর অনুপাতই হলো আপনার সফলতার হার। ভালো সফলতার হার সাধারণত ৭০-৮৫% এর মধ্যে থাকে, কারণ এসএমএস কোনো নিশ্চিত ডেলিভারি পদ্ধতি নয় এবং কিছু অঞ্চলে এর অপব্যবহার হতে পারে। ৫০%-এর কম সফলতার হার বোঝায় যে অনেক এসএমএস পাঠানো হয়েছে কিন্তু সফল লগইনের সংখ্যা কম, যা সাধারণত অসাধু ব্যক্তি এবং এসএমএস ট্র্যাফিক পাম্পিং-এর একটি সাধারণ সূচক।
যেসব এসএমএস অঞ্চলের সফলতার হার কম, সেগুলোকে বাতিল করতে অথবা আপনার অ্যাপটি যদি শুধু নির্দিষ্ট কিছু বাজারে বিতরণের জন্য তৈরি করা হয়ে থাকে, তবে শুধু নির্দিষ্ট কিছু অঞ্চলকে অনুমতি দিতে এসএমএস অঞ্চল নীতি (SMS Region Policy) ব্যবহার করুন।
আপনার অনুমোদিত প্রমাণীকরণ ডোমেনগুলি সীমিত করুন
অনুমোদিত ডোমেইনগুলো পরিচালনা করতে অথেনটিকেশন সেটিংস ড্যাশবোর্ড ব্যবহার করুন। ডেভেলপমেন্ট সহজ করার জন্য localhost ডোমেইনটি ডিফল্টরূপে অনুমোদিত অথেনটিকেশন ডোমেইনগুলোর তালিকায় যুক্ত থাকে। দুষ্কৃতকারীরা যাতে তাদের localhost কোড চালিয়ে আপনার প্রোডাকশন প্রজেক্ট অ্যাক্সেস করতে না পারে, সেজন্য আপনার প্রোডাকশন প্রজেক্টের অনুমোদিত ডোমেইনগুলোর তালিকা থেকে localhost সরিয়ে ফেলার কথা বিবেচনা করুন।
App Check সক্ষম এবং কার্যকর করুন
আপনার প্রোজেক্টকে এপিআই অপব্যবহার থেকে সুরক্ষিত রাখতে App Check সক্রিয় করুন, যা নিশ্চিত করে যে অনুরোধগুলি শুধুমাত্র আপনার প্রোজেক্টের সাথে যুক্ত অ্যাপ্লিকেশনগুলি থেকেই আসছে।
Firebase Authentication সাথে App Check ব্যবহার করতে হলে, আপনাকে অবশ্যই Firebase Authentication with Identity Platform এ আপগ্রেড করতে হবে।
মনে রাখবেন যে, আপনাকে Firebase কনসোলে প্রমাণীকরণের জন্য App Check for Authentication কার্যকর করতে হবে (কার্যকর করার আগে ট্র্যাফিক নিরীক্ষণ করার কথা বিবেচনা করুন)। এছাড়াও, আপনার reCAPTCHA এন্টারপ্রাইজ অনুমোদিত সাইটগুলির তালিকাটি পুনরায় যাচাই করে নিশ্চিত করুন যে, এতে শুধুমাত্র আপনার প্রোডাকশন সাইটগুলিই রয়েছে এবং App Check এ আপনার প্রোজেক্টে নিবন্ধিত অ্যাপ্লিকেশনগুলির তালিকাটি সঠিক।
মনে রাখবেন যে, App Check কলটি আপনার নিবন্ধিত অ্যাপ্লিকেশনগুলির মধ্যে একটি থেকে আসছে তা নিশ্চিত করার মাধ্যমে স্বয়ংক্রিয় আক্রমণ থেকে সুরক্ষা দিতে সাহায্য করে। এটি ব্যবহারকারীদের আপনার অ্যাপটি অনাকাঙ্ক্ষিত উপায়ে ব্যবহার করা থেকে বিরত রাখে না (উদাহরণস্বরূপ, পাঠানো এসএমএস তৈরি করার জন্য লগইন ফ্লো শুরু করে তা আর শেষ না করা)।
বর্তমানে, বিভিন্ন ক্যারিয়ারের মধ্যে নম্বর পোর্ট করলে সেই ব্যবহারকারীদের কাছে সমস্ত এসএমএস ডেলিভারি করা যাবে না। এর কোনো বিকল্প সমাধান নেই এবং ফায়ারবেস এই সমস্যাটি সমাধানের জন্য কাজ করছে।
আপনি যদি নিম্নলিখিত ত্রুটিটি পান, তাহলে এই FAQ-তে দেওয়া সমস্যা সমাধানের ধাপগুলি অনুসরণ করুন:
GoogleFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 13: Unable to get token.
at
com.google.android.gms.internal.auth-api.zbay.getSignInCredentialFromIntent(com.google.android.gms:play-services-auth@@20.3.0:6)
নিশ্চিত করুন যে গুগল সাইন-ইন একটি প্রমাণীকরণ প্রদানকারী হিসাবে সঠিকভাবে সক্রিয় করা আছে:
Firebase কনসোলে, Authentication সেকশনটি খুলুন।
'সাইন ইন পদ্ধতি' ট্যাবের মধ্যে, গুগল সাইন-ইন পদ্ধতিটি নিষ্ক্রিয় করুন এবং তারপরে পুনরায় সক্রিয় করুন (এমনকি যদি এটি ইতিমধ্যেই সক্রিয় থাকে):
গুগল সাইন-ইন পদ্ধতিটি খুলুন, এটিকে নিষ্ক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
গুগল সাইন-ইন পদ্ধতিটি পুনরায় খুলুন, এটি সক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
নিশ্চিত করুন যে আপনার অ্যাপটি তার হালনাগাদ ফায়ারবেস কনফিগারেশন ফাইল (
google-services.json) ব্যবহার করছে।
আপনার অ্যাপের কনফিগারেশন ফাইলটি সংগ্রহ করুন।দেখুন আপনি এখনও ত্রুটিটি পাচ্ছেন কিনা। যদি পান, তাহলে সমস্যা সমাধানের পরবর্তী ধাপে যান।
প্রয়োজনীয় অন্তর্নিহিত OAuth 2.0 ক্লায়েন্টগুলো উপস্থিত আছে কিনা তা নিশ্চিত করুন।
Google Cloud কনসোলের ক্রেডেনশিয়ালস পৃষ্ঠায়, OAuth 2.0 ক্লায়েন্ট আইডি বিভাগে দেখুন।
যদি OAuth 2.0 ক্লায়েন্ট উপস্থিত না থাকে (এবং আপনি উপরের সমস্ত সমস্যা সমাধানের ধাপগুলো অনুসরণ করে থাকেন), তাহলে সাপোর্টের সাথে যোগাযোগ করুন ।
আপনি যদি নিম্নলিখিত ত্রুটিটি পান, তাহলে এই FAQ-তে দেওয়া সমস্যা সমাধানের ধাপগুলি অনুসরণ করুন:
You must specify |clientID| in |GIDConfiguration|
নিশ্চিত করুন যে গুগল সাইন-ইন একটি প্রমাণীকরণ প্রদানকারী হিসাবে সঠিকভাবে সক্রিয় করা আছে:
Firebase কনসোলে, Authentication সেকশনটি খুলুন।
'সাইন ইন পদ্ধতি' ট্যাবের মধ্যে, গুগল সাইন-ইন পদ্ধতিটি নিষ্ক্রিয় করুন এবং তারপরে পুনরায় সক্রিয় করুন (এমনকি যদি এটি ইতিমধ্যেই সক্রিয় থাকে):
গুগল সাইন-ইন পদ্ধতিটি খুলুন, এটিকে নিষ্ক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
গুগল সাইন-ইন পদ্ধতিটি পুনরায় খুলুন, এটি সক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
নিশ্চিত করুন যে আপনার অ্যাপটি তার হালনাগাদ ফায়ারবেস কনফিগারেশন ফাইল (
GoogleService-Info.plist) ব্যবহার করছে।
আপনার অ্যাপের কনফিগারেশন ফাইলটি সংগ্রহ করুন।দেখুন আপনি এখনও ত্রুটিটি পাচ্ছেন কিনা। যদি পান, তাহলে সমস্যা সমাধানের পরবর্তী ধাপে যান।
প্রয়োজনীয় অন্তর্নিহিত OAuth 2.0 ক্লায়েন্টগুলো উপস্থিত আছে কিনা তা নিশ্চিত করুন।
Google Cloud কনসোলের ক্রেডেনশিয়ালস পৃষ্ঠায়, OAuth 2.0 ক্লায়েন্ট আইডি বিভাগে দেখুন।
যদি OAuth 2.0 ক্লায়েন্ট উপস্থিত না থাকে (এবং আপনি উপরের সমস্ত সমস্যা সমাধানের ধাপগুলো অনুসরণ করে থাকেন), তাহলে সাপোর্টের সাথে যোগাযোগ করুন ।
আপনি যদি নিম্নলিখিত ত্রুটিটি পান, তাহলে এই FAQ-তে দেওয়া সমস্যা সমাধানের ধাপগুলি অনুসরণ করুন:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
নিশ্চিত করুন যে গুগল সাইন-ইন একটি প্রমাণীকরণ প্রদানকারী হিসাবে সঠিকভাবে সক্রিয় করা আছে:
Firebase কনসোলে, Authentication সেকশনটি খুলুন।
'সাইন ইন পদ্ধতি' ট্যাবের মধ্যে, গুগল সাইন-ইন পদ্ধতিটি নিষ্ক্রিয় করুন এবং তারপরে পুনরায় সক্রিয় করুন (এমনকি যদি এটি ইতিমধ্যেই সক্রিয় থাকে):
গুগল সাইন-ইন পদ্ধতিটি খুলুন, এটিকে নিষ্ক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
গুগল সাইন-ইন পদ্ধতিটি পুনরায় খুলুন, এটি সক্রিয় করুন এবং তারপরে সেভ-এ ক্লিক করুন।
এছাড়াও, Authentication সেকশনের Google সাইন-ইন প্রোভাইডার কনফিগারেশনে, নিশ্চিত করুন যে OAuth ক্লায়েন্ট আইডি এবং সিক্রেট, Google Cloud কনসোলের Credentials পেজে প্রদর্শিত ওয়েব ক্লায়েন্টের সাথে মেলে ( OAuth 2.0 ক্লায়েন্ট আইডি সেকশনটি দেখুন)।
আপনি যদি নিম্নলিখিত ত্রুটিটি পান, তাহলে এই FAQ-তে দেওয়া সমস্যা সমাধানের ধাপগুলি অনুসরণ করুন:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
এই ত্রুটিটি সম্ভবত এই কারণে ঘটছে যে, আপনার রিডাইরেক্ট ডোমেইনটি Firebase Authentication জন্য একটি অনুমোদিত ডোমেইন হিসেবে তালিকাভুক্ত নয়, অথবা আপনি Firebase Authentication সার্ভিসের সাথে যে এপিআই কী ব্যবহার করেন তা অবৈধ।
প্রথমে নিশ্চিত করুন যে আপনার Firebase প্রোজেক্টের জন্য অনুমোদিত ডোমেইনের তালিকায় YOUR_REDIRECT_DOMAIN আছে। যদি আপনার রিডাইরেক্ট ডোমেইনটি ইতিমধ্যেই সেখানে তালিকাভুক্ত থাকে, তাহলে একটি অবৈধ API কী-এর সমস্যা সমাধান করতে এগিয়ে যান।
ডিফল্টরূপে, Firebase Authentication JS SDK আপনার Firebase প্রজেক্টের 'ব্রাউজার কী' ( Browser key ) নামক API কী-এর উপর নির্ভর করে এবং অনুমোদিত ডোমেইনের তালিকা অনুযায়ী একটি সাইন-ইন রিডাইরেক্ট URL বৈধ কিনা তা যাচাই করতে এই কী-টি ব্যবহার করে। আপনি কীভাবে Authentication SDK অ্যাক্সেস করছেন তার উপর নির্ভর করে Authentication এই API কী-টি পেয়ে থাকে।
আপনি যদি অথেনটিকেশন জেএস এসডিকে Authentication JS SDK) ব্যবহার করে ব্যবহারকারীদের লগ ইন করানোর জন্য Hosting -প্রদত্ত অথেনটিকেশন হেল্পার (Auth helpers) ব্যবহার করেন, তাহলে প্রতিবার Firebase Hosting এ ডিপ্লয় করার সময় ফায়ারবেস আপনার বাকি কনফিগারেশনের সাথে স্বয়ংক্রিয়ভাবে আপনার এপিআই কী (API key) সংগ্রহ করে নেয়। নিশ্চিত করুন যে আপনার ওয়েব অ্যাপের
firebaseConfigএরauthDomainসেই Hosting সাইটের ডোমেইনগুলোর মধ্যে একটি ব্যবহার করার জন্য সঠিকভাবে কনফিগার করা আছে। আপনিhttps:// authDomain __/firebase/init.jsonএ গিয়ে এবংprojectIdআপনারfirebaseConfigসাথে মিলছে কিনা তা পরীক্ষা করে এটি যাচাই করতে পারেন।আপনি যদি সাইন-ইন কোডটি সেলফ-হোস্ট করেন , তাহলে সেলফ-হোস্টেড Authentication JS SDK Redirect helper-কে Firebase কনফিগারেশন সরবরাহ করার জন্য একটি
__/firebase/init.jsonফাইল ব্যবহার করতে পারেন। এই কনফিগারেশন ফাইলে তালিকাভুক্ত API key এবংprojectIdআপনার ওয়েব অ্যাপেরfirebaseConfigসাথে অবশ্যই মিলতে হবে।
এই API কী-টি মুছে ফেলা হয়নি তা নিশ্চিত করতে পরীক্ষা করুন: Google Cloud কনসোলের APIs & Services > Credentials প্যানেলে যান, যেখানে আপনার প্রোজেক্টের সমস্ত API কী তালিকাভুক্ত রয়েছে।
যদি
Browser keyমুছে ফেলা না হয়ে থাকে, তাহলে নিম্নলিখিত বিষয়গুলো যাচাই করুন:নিশ্চিত করুন যে, কী-টি অ্যাক্সেস করার জন্য অনুমোদিত API-এর তালিকায় Firebase Authentication API-টি রয়েছে ( API কী-এর সীমাবদ্ধতা সম্পর্কে আরও জানুন )।
আপনি যদি সাইন-ইন কোডটি নিজে হোস্ট করেন, তাহলে নিশ্চিত করুন যে আপনার
__/firebase/init.jsonফাইলে তালিকাভুক্ত API কী-টি Google Cloud কনসোলের API কী-এর সাথে মেলে। প্রয়োজনে, ফাইলটিতে কী-টি সংশোধন করুন, তারপর আপনার অ্যাপটি পুনরায় ডেপ্লয় করুন।যদি
Browser keyমুছে ফেলা হয়ে থাকে, তাহলে আপনি Firebase-কে দিয়ে আপনার জন্য একটি নতুন API কী তৈরি করিয়ে নিতে পারেন: Firebase কনসোলে যান> প্রজেক্ট সেটিংস-এ যান, তারপর আপনার অ্যাপস বিভাগে আপনার ওয়েব অ্যাপে ক্লিক করুন। এই কাজটি স্বয়ংক্রিয়ভাবে একটি API কী তৈরি করে, যা আপনি আপনার ওয়েব অ্যাপের জন্য SDK সেটআপ এবং কনফিগারেশন বিভাগে দেখতে পাবেন।
মনে রাখবেন যে Google Cloud কনসোলে এই নতুন API কী-টিকে
Browser keyবলা হবে না; পরিবর্তে, এটির নাম আপনার Firebase ওয়েব অ্যাপের ডাকনামের মতোই হবে। আপনি যদি এই নতুন API কী-তে API সীমাবদ্ধতা যোগ করার সিদ্ধান্ত নেন, তাহলে নিশ্চিত করুন যে Firebase Authentication API-টি অনুমোদিত API-গুলির তালিকায় রয়েছে।আপনার নতুন API কী তৈরি হয়ে গেলে, নিচের প্রযোজ্য ধাপগুলো সম্পন্ন করুন:
আপনি যদি সংরক্ষিত Hosting ইউআরএল ব্যবহার করেন, তাহলে আপনার অ্যাপটি ফায়ারবেসে পুনরায় ডেপ্লয় করুন, যাতে এটি আপনার ফায়ারবেস কনফিগারেশনের বাকি অংশের সাথে স্বয়ংক্রিয়ভাবে নতুন এপিআই কী পেয়ে যায়।
আপনি যদি সাইন-ইন কোডটি সেলফ-হোস্ট করেন , তাহলে নতুন API কী-টি কপি করে আপনার
__/firebase/init.jsonফাইলে যোগ করুন, তারপর আপনার অ্যাপটি পুনরায় ডিপ্লয় করুন।
Google Cloud কনসোলের ক্রেডেনশিয়ালস পৃষ্ঠাটি খুলুন।
পৃষ্ঠার শীর্ষে, Create credentials > OAuth client ID নির্বাচন করুন।
আপনার সম্মতি স্ক্রিন কনফিগার করার জন্য অনুরোধ করা হলে, স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন এবং তারপর এই FAQ-এর পরবর্তী ধাপগুলো চালিয়ে যান।
OAuth ওয়েব ক্লায়েন্ট তৈরি করুন:
অ্যাপ্লিকেশন টাইপের জন্য ওয়েব অ্যাপ্লিকেশন নির্বাচন করুন।
অনুমোদিত জাভাস্ক্রিপ্ট অরিজিনগুলোর জন্য, নিম্নলিখিতটি যোগ করুন:
-
http://localhost -
http://localhost:5000 -
https:// PROJECT_ID .firebaseapp.com -
https:// PROJECT_ID .web.app
-
অনুমোদিত রিডাইরেক্ট ইউআরআই-গুলোর জন্য নিম্নলিখিতগুলো যোগ করুন:
-
https:// PROJECT_ID .firebaseapp.com/__/auth/handler -
https:// PROJECT_ID .web.app/__/auth/handler
-
OAuth ক্লায়েন্টটি সংরক্ষণ করুন।
নতুন OAuth ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট আপনার ক্লিপবোর্ডে কপি করুন।
Firebase কনসোলে, Authentication সেকশনটি খুলুন।
সাইন ইন পদ্ধতি ট্যাবের মধ্যে, গুগল সাইন-ইন প্রদানকারীটি খুলুন এবং তারপরে আপনি এইমাত্র Google Cloud কনসোল থেকে তৈরি ও কপি করা ওয়েব সার্ভার ক্লায়েন্ট আইডি এবং সিক্রেটটি পেস্ট করুন। সেভ-এ ক্লিক করুন।
২০২২ সালের ডিসেম্বরের আগে, ইমেল টেমপ্লেটে থাকা %APP_NAME% স্থানটি OAuth ব্র্যান্ডের নাম দিয়ে পূরণ করা হতো, যা ফায়ারবেস প্রজেক্টে কোনো অ্যান্ড্রয়েড অ্যাপ রেজিস্টার করার সময় স্বয়ংক্রিয়ভাবে সরবরাহ করা হতো। এখন, যেহেতু OAuth ব্র্যান্ডটি শুধুমাত্র গুগল সাইন-ইন চালু থাকলেই সরবরাহ করা হয়, তাই %APP_NAME% কীভাবে নির্ধারিত হয় তা নিচে বর্ণনা করা হলো:
যদি OAuth ব্র্যান্ড নামটি উপলব্ধ থাকে, তাহলে ইমেল টেমপ্লেটে থাকা
%APP_NAME%হবে OAuth ব্র্যান্ড নামটি (যা ২০২২ সালের ডিসেম্বরের আগের আচরণের মতোই)।যদি OAuth ব্র্যান্ড নামটি উপলব্ধ না থাকে, তাহলে ইমেল টেমপ্লেটে
%APP_NAME%যেভাবে নির্ধারিত হয় তা নিচে দেওয়া হলো:ওয়েব অ্যাপের ক্ষেত্রে ,
%APP_NAME%হবে ডিফল্ট Firebase Hosting সাইটের নাম (যা.firebaseapp.comএবং.web.appএর আগে থাকে এবং সাধারণত ফায়ারবেস প্রজেক্ট আইডি হয়ে থাকে)।মোবাইল অ্যাপের জন্য:
অনুরোধে যদি অ্যান্ড্রয়েড প্যাকেজ নেম বা আইওএস বান্ডেল আইডি উপস্থিত থাকে, তাহলে
%APP_NAME%হবে যথাক্রমে প্লে স্টোর বা অ্যাপ স্টোরে ব্যবহৃত অ্যাপের নাম।অন্যথায়,
%APP_NAME%হবে ডিফল্ট Firebase Hosting সাইটের নাম (যা.firebaseapp.comএবং.web.appএর আগে থাকে এবং সাধারণত ফায়ারবেস প্রজেক্ট আইডি)।
মনে রাখবেন যে, ডিফল্ট Firebase Hosting সাইটের নাম খুঁজে বের করা ব্যর্থ হলে, শেষ উপায় হিসেবে
%APP_NAME%হিসেবে ফায়ারবেস প্রজেক্ট আইডি ব্যবহার করতে হবে।