আপনার অ্যাপকে ফায়ারবেসের সাথে সংযুক্ত করুন
যদি আগে থেকে না করে থাকেন, তাহলে Flutter-এর জন্য Firebase SDK-গুলো ইনস্টল ও চালু করুন ।
আপনার অ্যাপে ফায়ারবেস অথেন্টিকেশন যোগ করুন
আপনার ফ্লাটার প্রজেক্টের রুট থেকে প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
flutter pub add firebase_authএকবার সম্পন্ন হলে, আপনার ফ্লাটার অ্যাপ্লিকেশনটি পুনর্নির্মাণ করুন:
flutter runআপনার ডার্ট কোডে প্লাগইনটি ইম্পোর্ট করুন:
import 'package:firebase_auth/firebase_auth.dart';
একটি অথেনটিকেশন প্রোভাইডার ব্যবহার করতে, আপনাকে ফায়ারবেস কনসোলে এটি সক্রিয় করতে হবে। ইমেল/পাসওয়ার্ড সাইন-ইন এবং আপনার অ্যাপের জন্য প্রয়োজনীয় অন্য যেকোনো আইডেন্টিটি প্রোভাইডার সক্রিয় করতে, ফায়ারবেস অথেনটিকেশন বিভাগের 'সাইন-ইন মেথড' পৃষ্ঠায় যান।
(ঐচ্ছিক) ফায়ারবেস লোকাল এমুলেটর স্যুট দিয়ে প্রোটোটাইপ এবং পরীক্ষা করুন
আপনার অ্যাপ কীভাবে ব্যবহারকারীদের প্রমাণীকরণ করে, সে সম্পর্কে কথা বলার আগে, আসুন এমন কিছু টুলের সাথে পরিচিত হই যা আপনি প্রমাণীকরণ কার্যকারিতার প্রোটোটাইপ তৈরি এবং পরীক্ষা করার জন্য ব্যবহার করতে পারেন: ফায়ারবেস লোকাল এমুলেটর স্যুট। আপনি যদি বিভিন্ন প্রমাণীকরণ কৌশল এবং প্রোভাইডারের মধ্যে সিদ্ধান্ত নিতে চান, প্রমাণীকরণ এবং ফায়ারবেস সিকিউরিটি রুলস ব্যবহার করে পাবলিক ও প্রাইভেট ডেটা সহ বিভিন্ন ডেটা মডেল পরীক্ষা করতে চান, অথবা সাইন-ইন UI ডিজাইনের প্রোটোটাইপ তৈরি করতে চান, তবে লাইভ সার্ভিস ডেপ্লয় না করে স্থানীয়ভাবে কাজ করতে পারাটা একটি দারুণ ব্যাপার হতে পারে।
অথেনটিকেশন এমুলেটর হলো লোকাল এমুলেটর স্যুটের একটি অংশ, যা আপনার অ্যাপকে এমুলেটেড ডেটাবেস কন্টেন্ট ও কনফিগের পাশাপাশি ঐচ্ছিকভাবে আপনার এমুলেটেড প্রোজেক্ট রিসোর্সগুলোর (ফাংশন, অন্যান্য ডেটাবেস এবং সিকিউরিটি রুলস) সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করে।
অথেনটিকেশন এমুলেটর ব্যবহার করতে মাত্র কয়েকটি ধাপ অনুসরণ করতে হয়:
এমুলেটরের সাথে সংযোগ করার জন্য আপনার অ্যাপের টেস্ট কনফিগ-এ একটি কোড লাইন যোগ করুন।
আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে
firebase emulators:startচালান।ইন্টারেক্টিভ প্রোটোটাইপিংয়ের জন্য লোকাল এমুলেটর স্যুট UI, অথবা নন-ইন্টারেক্টিভ টেস্টিংয়ের জন্য অথেনটিকেশন এমুলেটর REST API ব্যবহার করুন।
এমুলেটরের ঠিকানা ও পোর্ট নির্দিষ্ট করতে
useAuthEmulator()কল করুন:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
আপনার অ্যাপকে অথেনটিকেশন এমুলেটরের সাথে সংযুক্ত করুন -এ একটি বিস্তারিত নির্দেশিকা পাওয়া যাবে। আরও তথ্যের জন্য, লোকাল এমুলেটর স্যুট পরিচিতি দেখুন।
এবার চলুন ব্যবহারকারীদের প্রমাণীকরণের পদ্ধতি নিয়ে আলোচনা করা যাক।
বর্তমান প্রমাণীকরণ অবস্থা যাচাই করুন
আপনার নতুন বা বিদ্যমান ফ্লাটার অ্যাপ্লিকেশনে সুরক্ষিত অথেন্টিকেশন সংহত করার জন্য ফায়ারবেস অথ অনেক মেথড এবং ইউটিলিটি প্রদান করে। অনেক ক্ষেত্রে, আপনার ব্যবহারকারীর অথেন্টিকেশন অবস্থা সম্পর্কে জানার প্রয়োজন হবে, যেমন তিনি লগ ইন করেছেন নাকি লগ আউট করেছেন।
Firebase Auth আপনাকে একটি Stream মাধ্যমে রিয়েলটাইমে এই স্টেটটি সাবস্ক্রাইব করার সুযোগ দেয়। একবার কল করা হলে, স্ট্রিমটি ব্যবহারকারীর বর্তমান অথেনটিকেশন স্টেটের একটি তাৎক্ষণিক ইভেন্ট প্রদান করে এবং এরপর যখনই অথেনটিকেশন স্টেট পরিবর্তিত হয়, তখন পরবর্তী ইভেন্টগুলোও প্রদান করে।
প্রমাণীকরণ অবস্থার পরিবর্তন শোনার তিনটি পদ্ধতি রয়েছে:
authStateChanges()
এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে authStateChanges() মেথডটি কল করুন:
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
নিম্নলিখিত ঘটনা ঘটলে ইভেন্টগুলি ট্রিগার হয়:
- শ্রোতা নিবন্ধিত হওয়ার ঠিক পরেই।
- যখন কোনো ব্যবহারকারী সাইন ইন করেন।
- যখন বর্তমান ব্যবহারকারী সাইন আউট করেন।
idTokenChanges()
এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে idTokenChanges() মেথডটি কল করুন:
FirebaseAuth.instance
.idTokenChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
নিম্নলিখিত ঘটনা ঘটলে ইভেন্টগুলি ট্রিগার হয়:
- শ্রোতা নিবন্ধিত হওয়ার ঠিক পরেই।
- যখন কোনো ব্যবহারকারী সাইন ইন করেন।
- যখন বর্তমান ব্যবহারকারী সাইন আউট করেন।
- যখন বর্তমান ব্যবহারকারীর টোকেনে কোনো পরিবর্তন হয়।
- কাস্টম ক্লেইমগুলো পরিবর্তন করার পর একজন ব্যবহারকারী সাইন ইন বা পুনরায় প্রমাণীকরণ করেন। এর ফলে ইস্যু করা আইডি টোকেনটিতে সর্বশেষ ক্লেইমগুলো অন্তর্ভুক্ত থাকবে।
- পুরোনো টোকেনের মেয়াদ শেষ হয়ে গেলে, বিদ্যমান ব্যবহারকারী সেশনের আইডি টোকেনটি রিফ্রেশ করা হয়।
-
FirebaseAuth.instance.currentUser.getIdTokenResult(true)কল করার মাধ্যমে একটি আইডি টোকেন জোরপূর্বক রিফ্রেশ করা হয়।
আরও বিস্তারিত জানতে, ক্লায়েন্টের কাছে কাস্টম দাবি প্রচার দেখুন।
userChanges()
এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে userChanges() মেথডটি কল করুন:
FirebaseAuth.instance
.userChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
নিম্নলিখিত ঘটনা ঘটলে ইভেন্টগুলি ট্রিগার হয়:
- শ্রোতা নিবন্ধিত হওয়ার ঠিক পরেই।
- যখন কোনো ব্যবহারকারী সাইন ইন করেন।
- যখন বর্তমান ব্যবহারকারী সাইন আউট করেন।
- যখন বর্তমান ব্যবহারকারীর টোকেনে কোনো পরিবর্তন হয়।
- যখন
FirebaseAuth.instance.currentUserদ্বারা প্রদত্ত নিম্নলিখিত পদ্ধতিগুলি কল করা হয়:-
reload() -
unlink() -
updateEmail() -
updatePassword() -
updatePhoneNumber() -
updateProfile()
-
idTokenChanges() , userChanges() & authStateChanges() will also not fire if you disable or delete the User with the Firebase Admin SDK or the Firebase console. You will have to force a reload using FirebaseAuth.instance.currentUser.reload() , which will cause a user-disabled or user-not-found exception that you can catch and handle in your app code.
স্থায়ী প্রমাণীকরণ অবস্থা
সকল প্ল্যাটফর্মের জন্য ফায়ারবেস এসডিকে-গুলোতে এমন বিল্ট-ইন সাপোর্ট রয়েছে যা অ্যাপ রিস্টার্ট বা পেজ রিলোডের পরেও আপনার ব্যবহারকারীর অথেনটিকেশন স্টেট অক্ষুণ্ণ রাখে।
অ্যান্ড্রয়েড ও আইওএস-এর মতো নেটিভ প্ল্যাটফর্মগুলিতে এই আচরণটি কনফিগার করা যায় না এবং অ্যাপটি পুনরায় চালু করার পরেও ব্যবহারকারীর অথেনটিকেশন স্টেট ডিভাইসে সংরক্ষিত থাকে। ব্যবহারকারী ডিভাইসের সেটিংস ব্যবহার করে অ্যাপের ক্যাশ করা ডেটা মুছে ফেলতে পারেন, যা সংরক্ষিত যেকোনো বিদ্যমান স্টেট মুছে দেবে।
ওয়েব প্ল্যাটফর্মগুলিতে, ব্যবহারকারীর অথেনটিকেশন স্টেট IndexedDB- তে সংরক্ষিত থাকে। আপনি Persistence.LOCAL ব্যবহার করে ডেটা লোকাল স্টোরেজে সংরক্ষণ করার জন্য পার্সিস্টেন্স পরিবর্তন করতে পারেন। প্রয়োজন হলে, আপনি এই ডিফল্ট আচরণটি পরিবর্তন করে শুধুমাত্র বর্তমান সেশনের জন্য অথেনটিকেশন স্টেট পার্সিস্ট করতে পারেন, অথবা একেবারেই না করতে পারেন। এই সেটিংস কনফিগার করতে, নিম্নলিখিত মেথডটি কল করুন FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); আপনি setPersistence(Persistence.NONE) ব্যবহার করে প্রতিটি Auth ইনস্ট্যান্সের জন্য পার্সিস্টেন্স আপডেট করতে পারেন।
// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);
পরবর্তী পদক্ষেপ
সমর্থিত পরিচয় এবং প্রমাণীকরণ পরিষেবাগুলির মাধ্যমে ব্যবহারকারীদের সাইন ইন ও সাইন আপ করার নির্দেশিকাগুলি দেখুন।