قم بإنشاء مستخدم
يمكنك إنشاء مستخدم جديد في مشروع Firebase بأربع طرق:
- قم باستدعاء طريقة
createUserWithEmailAndPassword()
. - سجّل دخول مستخدم لأول مرة باستخدام موفر هوية متحد ، مثل تسجيل الدخول إلى Google أو تسجيل الدخول إلى Facebook أو Apple.
يمكنك أيضًا إنشاء مستخدمين جدد مصادق عليهم بكلمة مرور من قسم المصادقة في وحدة تحكم Firebase في صفحة المستخدمين.
احصل على ملف تعريف المستخدم
للحصول على معلومات ملف تعريف المستخدم ، استخدم خصائص User
. هناك ثلاث طرق للحصول على كائن User
يمثل المستخدم الحالي:
authStateChanges
وidTokenChanges
وuserChanges
: سيتلقى المستمعون التابعون لكUser
الحالي ، أوnull
إذا لم تتم مصادقة أي مستخدم:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
عند بدء تشغيل التطبيق ، يتم تشغيل حدث بعد استعادة بيانات اعتماد المستخدم (إن وجدت) من التخزين المحلي ، مما يعني أنه يتم استدعاء المستمعين لديك دائمًا عند تهيئة حالة المستخدم. بعد ذلك ، كلما تغيرت حالة المصادقة ، سيتم رفع حدث جديد مع حالة المستخدم المحدثة.
من خلال الاستماع إلى حالة المصادقة ، يمكنك إنشاء واجهة مستخدم تتفاعل مع هذه التغييرات في حالة المصادقة.
كائن
UserCredential
الذي تم إرجاعه بواسطة طرق المصادقة (تسجيل الدخول -):UserCredential
signIn
خاصيةuser
معUser
الحالي:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
خاصية
FirebaseAuth
currentUser
: إذا كنت متأكدًا من أن المستخدم قام بتسجيل الدخول حاليًا ، فيمكنك الوصول إلىUser
من خاصيةcurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
يمكن أن يكون
currentUser
null
لسببين:- المستخدم لم يسجل الدخول.
- لم ينته كائن المصادقة من التهيئة. إذا كنت تستخدم مستمعًا لتتبع حالة تسجيل دخول المستخدم ، فلن تحتاج إلى التعامل مع هذه الحالة.
احصل على معلومات ملف التعريف الخاصة بموفر المستخدم
للحصول على معلومات الملف الشخصي التي تم استردادها من موفري تسجيل الدخول المرتبطين بمستخدم ، استخدم خاصية 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 للمتابعة لإعادة التوجيه مرة أخرى إلى التطبيق عند إرسال بريد إلكتروني للتحقق.
بالإضافة إلى ذلك ، يمكنك ترجمة رسالة التحقق من خلال تحديث رمز اللغة على مثيل المصادقة قبل إرسال البريد الإلكتروني. علي سبيل المثال:
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 للمتابعة لإعادة التوجيه مرة أخرى إلى التطبيق عند إرسال بريد إلكتروني لإعادة تعيين كلمة المرور.
بالإضافة إلى ذلك ، يمكنك ترجمة البريد الإلكتروني الخاص بإعادة تعيين كلمة المرور عن طريق تحديث رمز اللغة في مثيل المصادقة قبل إرسال البريد الإلكتروني. علي سبيل المثال:
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);
استيراد حسابات المستخدمين
يمكنك استيراد حسابات المستخدمين من ملف إلى مشروع Firebase الخاص بك باستخدام الأمر auth:import
الخاص بـ Firebase CLI. علي سبيل المثال:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14