اربط تطبيقك بـ Firebase
قم بتثبيت وتهيئة Firebase SDKs لـ Flutter إذا لم تكن قد قمت بذلك بالفعل.
أضف مصادقة Firebase إلى تطبيقك
من جذر مشروع Flutter الخاص بك ، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي:
flutter pub add firebase_auth
بمجرد الانتهاء ، أعد بناء تطبيق Flutter الخاص بك:
flutter run
قم باستيراد المكون الإضافي في كود Dart الخاص بك:
import 'package:firebase_auth/firebase_auth.dart';
لاستخدام موفر مصادقة ، تحتاج إلى تمكينه في وحدة تحكم Firebase . انتقل إلى صفحة طريقة تسجيل الدخول في قسم مصادقة Firebase لتمكين تسجيل الدخول إلى البريد الإلكتروني / كلمة المرور وأي موفري هوية آخرين تريدهم لتطبيقك.
(اختياري) النموذج الأولي والاختبار باستخدام Firebase Local Emulator Suite
قبل التحدث عن كيفية مصادقة التطبيق الخاص بك على المستخدمين ، دعنا نقدم مجموعة من الأدوات التي يمكنك استخدامها لعمل نموذج أولي واختبار وظائف المصادقة: Firebase Local Emulator Suite. إذا كنت تختار بين تقنيات وموفري المصادقة ، فإن تجربة نماذج بيانات مختلفة مع بيانات عامة وخاصة باستخدام قواعد المصادقة وأمن Firebase ، أو إنشاء نماذج أولية لتصميمات واجهة المستخدم لتسجيل الدخول ، فإن القدرة على العمل محليًا دون نشر الخدمات المباشرة يمكن أن تكون فكرة رائعة .
يعد محاكي المصادقة جزءًا من Local Emulator Suite ، والذي يمكّن تطبيقك من التفاعل مع محتوى قاعدة البيانات التي تمت محاكاتها وتكوينها ، بالإضافة إلى موارد المشروع التي تمت محاكاتها اختياريًا (الوظائف وقواعد البيانات الأخرى وقواعد الأمان).
يتضمن استخدام محاكي المصادقة بضع خطوات فقط:
إضافة سطر من التعليمات البرمجية إلى التكوين التجريبي لتطبيقك للاتصال بالمحاكي.
من جذر دليل المشروع المحلي ، قم بتشغيل
firebase emulators:start
.استخدام Local Emulator Suite 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 Authentication emulator . لمزيد من المعلومات ، راجع مقدمة Local Emulator Suite .
الآن دعنا نستمر في كيفية مصادقة المستخدمين.
تحقق من حالة المصادقة الحالية
يوفر Firebase Auth العديد من الأساليب والأدوات المساعدة لتمكينك من دمج المصادقة الآمنة في تطبيق Flutter الجديد أو الحالي. في كثير من الحالات ، ستحتاج إلى معرفة حالة المصادقة الخاصة بالمستخدم ، مثل ما إذا كان قد قام بتسجيل الدخول أو تسجيل الخروج.
يمكّنك Firebase Auth من الاشتراك في الوقت الفعلي في هذه الحالة عبر Stream
. بمجرد الاستدعاء ، يوفر الدفق حدثًا فوريًا لحالة المصادقة الحالية للمستخدم ، ثم يوفر الأحداث اللاحقة كلما تغيرت حالة المصادقة.
توجد ثلاث طرق للاستماع إلى تغييرات حالة المصادقة:
authStateChanges()
للاشتراك في هذه التغييرات ، استدع طريقة authStateChanges()
على مثيل FirebaseAuth
:
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
يتم تشغيل الأحداث عند حدوث ما يلي:
- مباشرة بعد تسجيل المستمع.
- عندما يقوم المستخدم بتسجيل الدخول.
- عندما يتم تسجيل خروج المستخدم الحالي.
idTokenChanges()
للاشتراك في هذه التغييرات ، اتصل idTokenChanges()
في مثيل FirebaseAuth
:
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()
للاشتراك في هذه التغييرات ، اتصل userChanges()
في مثيل FirebaseAuth
:
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 userChanges()
& authStateChanges()
إذا قمت بتعطيل أو حذف User
باستخدام Firebase Admin SDK أو وحدة تحكم Firebase. سيتعين عليك فرض إعادة التحميل باستخدام FirebaseAuth.instance.currentUser.reload()
، مما سيؤدي إلى استثناء user-disabled
user-not-found
يمكنك التقاطه والتعامل معه في رمز التطبيق الخاص بك.
حالة المصادقة المستمرة
توفر مجموعات Firebase SDK لجميع الأنظمة الأساسية دعمًا خارج الصندوق لضمان استمرار حالة مصادقة المستخدم عبر عمليات إعادة تشغيل التطبيق أو إعادة تحميل الصفحة.
على الأنظمة الأساسية الأصلية مثل Android و iOS ، لا يكون هذا السلوك قابلاً للتكوين وستستمر حالة مصادقة المستخدم على الجهاز بين إعادة تشغيل التطبيق. يمكن للمستخدم مسح البيانات المخزنة مؤقتًا للتطبيقات باستخدام إعدادات الجهاز ، والتي ستمسح أي حالة موجودة يتم تخزينها.
في منصات الويب ، يتم تخزين حالة مصادقة المستخدم في قاعدة بيانات مفهرسة . يمكنك تغيير المثابرة لتخزين البيانات في التخزين المحلي باستخدام 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);
الخطوات التالية
استكشف الأدلة الخاصة بتسجيل الدخول وتسجيل المستخدمين بخدمات المصادقة والهوية المدعومة.