یک کاربر ایجاد کنید
شما یک کاربر جدید در پروژه Firebase خود به چهار روش ایجاد می کنید:
-
createUserWithEmailAndPassword()
را فراخوانی کنید. - برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال ، مانند Google Sign-In، Facebook Login یا Apple، یک کاربر را وارد کنید.
همچنین میتوانید از بخش احراز هویت کنسول Firebase در صفحه کاربران، کاربران تأیید شده با رمز عبور جدید ایجاد کنید.
پروفایل کاربری را دریافت کنید
برای دریافت اطلاعات پروفایل کاربر، از ویژگی های User
استفاده کنید. سه راه برای بدست آوردن یک شی User
که کاربر فعلی را نشان می دهد وجود دارد:
authStateChanges
،idTokenChanges
وuserChanges
: شنوندگان شماUser
فعلی را دریافت میکنند یا اگر کاربری احراز هویت نشده باشد،null
میشوند:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
هنگامی که برنامه شروع به کار می کند، پس از بازیابی اطلاعات کاربری کاربر (در صورت وجود) از فضای ذخیره سازی محلی، یک رویداد فعال می شود، به این معنی که شنوندگان شما همیشه هنگامی که حالت کاربر مقداردهی اولیه می شود، فراخوانی می شوند. سپس، هر زمان که وضعیت احراز هویت تغییر کند، یک رویداد جدید با وضعیت کاربر به روز شده مطرح می شود.
با گوش دادن به وضعیت احراز هویت، می توانید یک رابط کاربری بسازید که به این تغییرات در وضعیت احراز هویت واکنش نشان دهد.
شی
UserCredential
که با روش های احراز هویت (signIn
-) برگردانده می شود: شیUserCredential
دارای یک ویژگیuser
باUser
فعلی است:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
ویژگی
currentUser
نمونهFirebaseAuth
: اگر مطمئن هستید که کاربر در حال حاضر وارد سیستم شده است، می توانید از ویژگیcurrentUser
بهUser
دسترسی داشته باشید:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
به دو دلیل می تواندnull
باشد:- کاربر وارد نشده است.
- شی 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;
}
}
به روز رسانی نمایه یک کاربر
میتوانید اطلاعات اولیه نمایه کاربر - نام نمایشی کاربر و URL عکس نمایه - را با روشهای 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 ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل تأیید به برنامه تغییر مسیر دهید.
علاوه بر این، میتوانید با بهروزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، ایمیل تأیید را بومیسازی کنید. مثلا:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
رمز عبور یک کاربر را تنظیم کنید
می توانید رمز عبور کاربر را با updatePassword()
کنید. مثلا:
await user?.updatePassword(newPassword);
یک ایمیل بازنشانی رمز عبور ارسال کنید
شما می توانید با روش sendPasswordResetEmail()
یک ایمیل بازنشانی رمز عبور برای کاربر ارسال کنید. مثلا:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
میتوانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل بازنشانی رمز عبور به برنامه هدایت شوید.
علاوه بر این، میتوانید ایمیل بازنشانی رمز عبور را با بهروزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، بومیسازی کنید. مثلا:
await FirebaseAuth.instance.setLanguageCode("fr");
همچنین میتوانید ایمیلهای بازنشانی رمز عبور را از کنسول Firebase ارسال کنید.
حذف یک کاربر
شما می توانید یک حساب کاربری را با روش delete()
. مثلا:
await user?.delete();
همچنین میتوانید کاربران را از بخش احراز هویت کنسول Firebase در صفحه کاربران حذف کنید.
احراز هویت مجدد یک کاربر
برخی از اقدامات حساس امنیتی - مانند حذف یک حساب ، تنظیم یک آدرس ایمیل اصلی و تغییر رمز عبور - مستلزم این است که کاربر اخیراً وارد سیستم شده باشد. اگر یکی از این اقدامات را انجام دهید و کاربر خیلی وقت پیش وارد سیستم شده باشد، اقدام با شکست مواجه می شود و FirebaseAuthException
را با کد requires-recent-login
پرتاب می کند. وقتی این اتفاق میافتد، با دریافت اعتبارنامه ورود به سیستم جدید از کاربر و ارسال اعتبار برای reauthenticate
هویت مجدد، کاربر را دوباره احراز هویت کنید. مثلا:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
وارد کردن حساب های کاربری
با استفاده از auth:import
در Firebase CLI میتوانید حسابهای کاربری را از یک فایل به پروژه Firebase وارد کنید. مثلا:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14