একজন ব্যবহারকারী তৈরি করুন
আপনার ফায়ারবেস প্রজেক্টে আপনি চারটি উপায়ে একজন নতুন ইউজার তৈরি করতে পারেন:
-
createUserWithEmailAndPassword()মেথডটি কল করুন। - গুগল সাইন-ইন, ফেসবুক লগইন বা অ্যাপলের মতো একটি ফেডারেটেড আইডেন্টিটি প্রোভাইডার ব্যবহার করে প্রথমবারের জন্য একজন ব্যবহারকারীকে সাইন ইন করান।
এছাড়াও আপনি Firebase কনসোলের Authentication সেকশনের Users পেজ থেকে নতুন পাসওয়ার্ড-প্রমাণিত ব্যবহারকারী তৈরি করতে পারেন।
Get a user's profile
কোনো ব্যবহারকারীর প্রোফাইল তথ্য পেতে, User এর প্রোপার্টিগুলো ব্যবহার করুন। বর্তমান ব্যবহারকারীকে প্রতিনিধিত্বকারী একটি User অবজেক্ট পাওয়ার তিনটি উপায় রয়েছে:
authStateChanges,idTokenChangesএবংuserChangesস্ট্রিমগুলো: আপনার লিসেনাররা বর্তমানUserপাবে, অথবা কোনো ব্যবহারকারী প্রমাণীকৃত না হলেnull।FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });অ্যাপটি চালু হলে, লোকাল স্টোরেজ থেকে ব্যবহারকারীর ক্রেডেনশিয়াল (যদি থাকে) পুনরুদ্ধার করার পরে একটি ইভেন্ট ফায়ার হয়। এর মানে হলো, ব্যবহারকারীর স্টেট ইনিশিয়ালাইজ হওয়ার সময় আপনার লিসেনারগুলো সবসময় কল করা হয়। এরপর, যখনই অথেনটিকেশন স্টেট পরিবর্তিত হবে, আপডেট করা ইউজার স্টেট সহ একটি নতুন ইভেন্ট তৈরি হবে।
অথেনটিকেশন স্টেট শোনার মাধ্যমে, আপনি এমন একটি ইউজার ইন্টারফেস তৈরি করতে পারেন যা এই অথেনটিকেশন স্টেটের পরিবর্তনগুলিতে প্রতিক্রিয়া দেখায়। কোনো উইজেটের বিল্ড মেথডের ভিতরে সরাসরি
authStateChanges().listen(...)রাখবেন না, কারণ এটি প্রতিটি রিবিল্ডের সময় একটি নতুন সাবস্ক্রিপশন তৈরি করবে। যদি অথেনটিকেশন স্টেটের প্রতিক্রিয়ায় UI আপডেট করার প্রয়োজন হয়, তাহলে একটিStreamBuilderব্যবহার করুন।StreamBuilder<User?>( stream: FirebaseAuth.instance.authStateChanges(), builder: (BuildContext context, AsyncSnapshot<User?> snapshot) { if (snapshot.hasError) { return const Text('Something went wrong'); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading..."); } if (!snapshot.hasData) { return const SignInScreen(); } final user = snapshot.data!; return HomeScreen(userId: user.uid); }, )এই পদ্ধতিটি নিশ্চিত করে যে ব্যবহারকারীর প্রমাণীকরণ অবস্থা পরিবর্তিত হলে উইজেট ট্রি স্বয়ংক্রিয়ভাবে পুনর্গঠিত হয়।
প্রমাণীকরণ (
signIn) পদ্ধতি দ্বারা ফেরত দেওয়াUserCredentialঅবজেক্টটিতে বর্তমানUserএকটিuserপ্রপার্টি থাকেUserCredentialfinal userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);FirebaseAuthইনস্ট্যান্সেরcurrentUserপ্রপার্টি: যদি আপনি নিশ্চিত হন যে ব্যবহারকারী বর্তমানে সাইন-ইন করা আছেন, তাহলে আপনিcurrentUserপ্রপার্টি থেকেUserঅ্যাক্সেস করতে পারবেন:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }দুটি কারণে
currentUsernullহতে পারে:- ব্যবহারকারী সাইন ইন করেননি।
- auth অবজেক্টটির ইনিশিয়ালাইজেশন এখনো শেষ হয়নি। যদি আপনি ব্যবহারকারীর সাইন-ইন স্ট্যাটাসের হিসাব রাখতে কোনো লিসেনার ব্যবহার করেন, তাহলে এই কেসটি হ্যান্ডেল করার প্রয়োজন নেই।
ব্যবহারকারীর প্রদানকারী-নির্দিষ্ট প্রোফাইল তথ্য পান
কোনো ব্যবহারকারীর সাথে লিঙ্ক করা সাইন-ইন প্রোভাইডারগুলি থেকে প্রাপ্ত প্রোফাইল তথ্য পেতে, providerData প্রপার্টিটি ব্যবহার করুন। উদাহরণস্বরূপ:
if (user != null) {
for (final providerProfile in user.providerData) {
// ID of the provider (google.com, apple.com, etc.)
final provider = providerProfile.providerId;
// UID specific to the provider
final uid = providerProfile.uid;
// Name, email address, and profile photo URL
final name = providerProfile.displayName;
final emailAddress = providerProfile.email;
final profilePhoto = providerProfile.photoURL;
}
}
একজন ব্যবহারকারীর প্রোফাইল আপডেট করুন
আপনি ` update মেথডগুলো ব্যবহার করে একজন ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য—যেমন তার প্রদর্শিত নাম এবং প্রোফাইল ফটোর ইউআরএল—আপডেট করতে পারেন। উদাহরণস্বরূপ:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
একজন ব্যবহারকারীর ইমেল ঠিকানা সেট করুন
আপনি updateEmail() মেথড ব্যবহার করে একজন ব্যবহারকারীর ইমেল ঠিকানা সেট করতে পারেন। উদাহরণস্বরূপ:
await user?.updateEmail("janeq@example.com");
একজন ব্যবহারকারীকে একটি যাচাইকরণ ইমেল পাঠান
আপনি sendEmailVerification() মেথড ব্যবহার করে কোনো ব্যবহারকারীকে ঠিকানা যাচাইকরণের ইমেল পাঠাতে পারেন। উদাহরণস্বরূপ:
await user?.sendEmailVerification();
আপনি Firebase কনসোলের Authentication বিভাগের Email Templates পৃষ্ঠায় ব্যবহৃত ইমেল টেমপ্লেটটি কাস্টমাইজ করতে পারেন। Firebase Help Center-এ Email Templates দেখুন।
ভেরিফিকেশন ইমেল পাঠানোর সময় অ্যাপে রিডাইরেক্ট করার জন্য একটি কন্টিনিউ ইউআরএল-এর মাধ্যমে স্টেট পাস করাও সম্ভব।
এছাড়াও, ইমেল পাঠানোর আগে Auth ইনস্ট্যান্সে ল্যাঙ্গুয়েজ কোড আপডেট করে আপনি ভেরিফিকেশন ইমেলটিকে স্থানীয়করণ করতে পারেন। উদাহরণস্বরূপ:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
ব্যবহারকারীর পাসওয়ার্ড সেট করুন
আপনি updatePassword() মেথড ব্যবহার করে একজন ব্যবহারকারীর পাসওয়ার্ড সেট করতে পারেন। উদাহরণস্বরূপ:
await user?.updatePassword(newPassword);
পাসওয়ার্ড রিসেট করার জন্য একটি ইমেল পাঠান
আপনি sendPasswordResetEmail() মেথড ব্যবহার করে কোনো ব্যবহারকারীকে পাসওয়ার্ড রিসেট ইমেল পাঠাতে পারেন। উদাহরণস্বরূপ:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
আপনি Firebase কনসোলের Authentication বিভাগের Email Templates পৃষ্ঠায় ব্যবহৃত ইমেল টেমপ্লেটটি কাস্টমাইজ করতে পারেন। Firebase Help Center-এ Email Templates দেখুন।
পাসওয়ার্ড রিসেট ইমেল পাঠানোর সময় অ্যাপে ফিরিয়ে আনার জন্য একটি কন্টিনিউ ইউআরএল- এর মাধ্যমে স্টেট পাস করাও সম্ভব।
এছাড়াও, ইমেল পাঠানোর আগে Auth ইনস্ট্যান্সে ল্যাঙ্গুয়েজ কোড আপডেট করে আপনি পাসওয়ার্ড রিসেট ইমেলটি স্থানীয়করণ করতে পারেন। উদাহরণস্বরূপ:
await FirebaseAuth.instance.setLanguageCode("fr");
আপনি ফায়ারবেস কনসোল থেকেও পাসওয়ার্ড রিসেট ইমেল পাঠাতে পারেন।
একজন ব্যবহারকারীকে মুছে ফেলুন
আপনি delete() মেথড ব্যবহার করে একটি ইউজার অ্যাকাউন্ট ডিলিট করতে পারেন। উদাহরণস্বরূপ:
await user?.delete();
আপনি Firebase কনসোলের Authentication সেকশনের Users পেজ থেকেও ইউজারদের ডিলিট করতে পারেন।
একজন ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করুন
কিছু নিরাপত্তা-সংবেদনশীল কাজ—যেমন একটি অ্যাকাউন্ট মুছে ফেলা , একটি প্রাথমিক ইমেল ঠিকানা সেট করা এবং পাসওয়ার্ড পরিবর্তন করা —এর জন্য ব্যবহারকারীকে সম্প্রতি সাইন ইন করতে হয়। আপনি যদি এই কাজগুলোর মধ্যে কোনো একটি করেন এবং ব্যবহারকারী অনেক দিন আগে সাইন ইন করে থাকেন, তাহলে কাজটি ব্যর্থ হয় এবং requires-recent-login কোডসহ একটি FirebaseAuthException থ্রো করে। এমনটি ঘটলে, ব্যবহারকারীর কাছ থেকে নতুন সাইন-ইন ক্রেডেনশিয়াল নিয়ে এবং reauthenticate ফাংশনে সেই ক্রেডেনশিয়ালগুলো পাস করে ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করুন। উদাহরণস্বরূপ:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
ব্যবহারকারী অ্যাকাউন্ট আমদানি করুন
আপনি Firebase CLI-এর auth:import কমান্ড ব্যবহার করে একটি ফাইল থেকে আপনার Firebase প্রজেক্টে ইউজার অ্যাকাউন্ট ইম্পোর্ট করতে পারেন। উদাহরণস্বরূপ:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14