আপনার অ্যাপটিকে Firebase-এ সংযুক্ত করুন
আপনি যদি ইতিমধ্যে এটি না করে থাকেন তবে ফ্লটারের জন্য Firebase SDK ইনস্টল করুন এবং শুরু করুন ৷
আপনার অ্যাপে Firebase প্রমাণীকরণ যোগ করুন
আপনার ফ্লাটার প্রকল্পের মূল থেকে, প্লাগইন ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
flutter pub add firebase_auth
একবার সম্পূর্ণ হয়ে গেলে, আপনার ফ্লাটার অ্যাপ্লিকেশন পুনর্নির্মাণ করুন:
flutter run
আপনার ডার্ট কোডে প্লাগইন আমদানি করুন:
import 'package:firebase_auth/firebase_auth.dart';
একটি প্রমাণীকরণ প্রদানকারী ব্যবহার করতে, আপনাকে এটি Firebase কনসোলে সক্ষম করতে হবে। আপনার অ্যাপের জন্য ইমেল/পাসওয়ার্ড সাইন-ইন এবং অন্য কোনো পরিচয় প্রদানকারীকে সক্ষম করতে Firebase প্রমাণীকরণ বিভাগে সাইন-ইন পদ্ধতি পৃষ্ঠায় যান।
(ঐচ্ছিক) ফায়ারবেস স্থানীয় এমুলেটর স্যুটের সাথে প্রোটোটাইপ এবং পরীক্ষা করুন
আপনার অ্যাপ কীভাবে ব্যবহারকারীদের প্রমাণীকরণ করে সে সম্পর্কে কথা বলার আগে, আসুন প্রমাণীকরণ কার্যকারিতা প্রোটোটাইপ এবং পরীক্ষা করার জন্য আপনি ব্যবহার করতে পারেন এমন সরঞ্জামগুলির একটি সেট পরিচয় করিয়ে দেওয়া যাক: ফায়ারবেস স্থানীয় এমুলেটর স্যুট। আপনি যদি প্রমাণীকরণ কৌশল এবং প্রদানকারীদের মধ্যে সিদ্ধান্ত নিচ্ছেন, প্রমাণীকরণ এবং ফায়ারবেস নিরাপত্তা নিয়ম ব্যবহার করে পাবলিক এবং প্রাইভেট ডেটা সহ বিভিন্ন ডেটা মডেল ব্যবহার করে দেখুন, বা সাইন-ইন 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); //... }
একটি বিস্তারিত নির্দেশিকা Connect your app to the Authentication emulator-এ উপলব্ধ। আরও তথ্যের জন্য, স্থানীয় এমুলেটর স্যুটের ভূমিকা দেখুন।
এখন চলুন কিভাবে ব্যবহারকারীদের প্রমাণীকরণ করা যায়।
বর্তমান প্রমাণীকরণের অবস্থা পরীক্ষা করুন
Firebase Auth আপনাকে আপনার নতুন বা বিদ্যমান Flutter অ্যাপ্লিকেশনে সুরক্ষিত প্রমাণীকরণকে একীভূত করতে সক্ষম করার জন্য অনেক পদ্ধতি এবং ইউটিলিটি প্রদান করে। অনেক ক্ষেত্রে, আপনাকে আপনার ব্যবহারকারীর প্রমাণীকরণ অবস্থা সম্পর্কে জানতে হবে, যেমন তারা লগ ইন করেছে বা লগ আউট করেছে কিনা।
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()
এছাড়াও ফায়ার হবে না যদি আপনি Firebase অ্যাডমিন SDK বা Firebase কনসোলের সাথে User
নিষ্ক্রিয় বা মুছে দেন। FirebaseAuth.instance.currentUser.reload()
ব্যবহার করে আপনাকে জোর করে পুনরায় লোড করতে হবে, যা user-disabled
বা user-not-found
ব্যতিক্রম সৃষ্টি করবে যা আপনি আপনার অ্যাপ কোডে ধরতে এবং পরিচালনা করতে পারেন।
স্থায়ী প্রমাণীকরণ অবস্থা
সমস্ত প্ল্যাটফর্মের জন্য Firebase SDKগুলি অ্যাপ রিস্টার্ট বা পৃষ্ঠা পুনরায় লোড করার সময় আপনার ব্যবহারকারীর প্রমাণীকরণের অবস্থা বজায় রয়েছে তা নিশ্চিত করার জন্য বাক্সের বাইরে সহায়তা প্রদান করে।
Android এবং iOS-এর মতো নেটিভ প্ল্যাটফর্মগুলিতে, এই আচরণটি কনফিগারযোগ্য নয় এবং ব্যবহারকারীর প্রমাণীকরণ স্থিতিটি অ্যাপ রিস্টার্টের মধ্যে ডিভাইসে বজায় থাকবে। ব্যবহারকারী ডিভাইস সেটিংস ব্যবহার করে অ্যাপ্লিকেশানের ক্যাশে করা ডেটা সাফ করতে পারে, যা সঞ্চিত থাকা যেকোনো বিদ্যমান অবস্থাকে মুছে ফেলবে।
ওয়েব প্ল্যাটফর্মে, ব্যবহারকারীর প্রমাণীকরণের অবস্থা IndexedDB- তে সংরক্ষণ করা হয়। আপনি Persistence.LOCAL
ব্যবহার করে স্থানীয় স্টোরেজে ডেটা সঞ্চয় করার জন্য অধ্যবসায় পরিবর্তন করতে পারেন। যদি প্রয়োজন হয়, আপনি এই ডিফল্ট আচরণ পরিবর্তন করতে পারেন শুধুমাত্র বর্তমান সেশনের জন্য প্রমাণীকরণ অবস্থা বজায় রাখতে, বা একেবারেই নয়। এই সেটিংস কনফিগার করতে, নিম্নলিখিত পদ্ধতিতে কল করুন FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);
. আপনি এখনও setPersistence(Persistence.NONE)
ব্যবহার করে প্রতিটি প্রমাণীকরণ উদাহরণের জন্য অধ্যবসায় আপডেট করতে পারেন।
// 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);
পরবর্তী পদক্ষেপ
সমর্থিত পরিচয় এবং প্রমাণীকরণ পরিষেবাগুলির সাথে ব্যবহারকারীদের সাইন ইন এবং সাইন আপ করার নির্দেশিকাগুলি অন্বেষণ করুন৷