ربط تطبيقك بمنصة Firebase
ثبِّت حِزم تطوير البرامج (SDK) الخاصة بمنصة Firebase لتطبيق Flutter وابدأ إعدادها إذا لم يسبق لك إجراء ذلك.
إضافة خدمة "مصادقة Firebase" إلى تطبيقك
من جذر مشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي:
flutter pub add firebase_authبعد الانتهاء، أعِد إنشاء تطبيق Flutter باتّباع الخطوات التالية:
flutter runاستورِد المكوّن الإضافي في رمز Dart:
import 'package:firebase_auth/firebase_auth.dart';
لاستخدام موفّر مصادقة، عليك تفعيله في وحدة تحكّم Firebase. انتقِل إلى صفحة "طريقة تسجيل الدخول" في قسم مصادقة Firebase لتفعيل تسجيل الدخول باستخدام عنوان البريد الإلكتروني وكلمة المرور وأي موفِّر هوية آخر تريده لتطبيقك.
(اختياري) إنشاء نموذج أوّلي واختباره باستخدام مجموعة أدوات المحاكاة المحلية لـ Firebase
قبل التحدّث عن كيفية مصادقة تطبيقك للمستخدمين، دعنا نقدّم مجموعة من الأدوات التي يمكنك استخدامها لإنشاء نماذج أولية واختبار وظيفة المصادقة: مجموعة أدوات المحاكاة المحلية لـ Firebase. إذا كنت بصدد الاختيار بين تقنيات ومقدّمي خدمات المصادقة، أو تجربة نماذج بيانات مختلفة مع بيانات عامة وخاصة باستخدام ميزة "المصادقة" و"قواعد الأمان في Firebase"، أو إنشاء نماذج أولية لتصاميم واجهة المستخدم الخاصة بتسجيل الدخول، قد يكون من المفيد أن تتمكّن من العمل محليًا بدون نشر الخدمات المباشرة.
يُعدّ محاكي المصادقة جزءًا من "مجموعة أدوات المحاكاة المحلية"، ما يتيح لتطبيقك التفاعل مع المحتوى والإعدادات المحاكية لقاعدة البيانات، بالإضافة إلى موارد المشروع المحاكية (الدوال وقواعد البيانات الأخرى وقواعد الأمان) بشكل اختياري.
لا يتطلّب استخدام محاكي Authentication سوى بضع خطوات:
إضافة سطر من الرمز البرمجي إلى إعدادات الاختبار في تطبيقك للاتصال بالمحاكي
من جذر دليل مشروع على جهاز المستخدم، نفِّذ الأمر
firebase emulators:start.استخدام واجهة مستخدم مجموعة أدوات المحاكاة المحلية لإنشاء نماذج أولية تفاعلية، أو REST API لمحاكي المصادقة لإجراء اختبارات غير تفاعلية.
اتّصِل بالرقم
useAuthEmulator()لتحديد عنوان المحاكي ومنفذه:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
يتوفّر دليل تفصيلي على ربط تطبيقك بمحاكي المصادقة. لمزيد من المعلومات، راجِع مقدمة عن مجموعة أدوات المحاكاة المحلية.
لنتابع الآن كيفية مصادقة المستخدمين.
التحقّق من حالة المصادقة الحالية
توفّر خدمة 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!');
}
});
يتم إطلاق الأحداث عند حدوث ما يلي:
- بعد تسجيل المستمع مباشرةً
- عندما يكون المستخدم مسجّلاً الدخول
- عندما يسجّل المستخدم الحالي الخروج
- عند حدوث تغيير في الرمز المميز للمستخدم الحالي
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()
الاحتفاظ بحالة المصادقة
توفّر حِزم تطوير البرامج (SDK) من Firebase لجميع المنصات إمكانية استخدام ميزة الحفاظ على حالة مصادقة المستخدم عند إعادة تشغيل التطبيق أو إعادة تحميل الصفحة.
على المنصات الأصلية، مثل Android وiOS، لا يمكن ضبط هذا السلوك، وسيتم الاحتفاظ بحالة مصادقة المستخدم على الجهاز بين عمليات إعادة تشغيل التطبيق. يمكن للمستخدم محو البيانات المخزّنة مؤقتًا للتطبيقات باستخدام إعدادات الجهاز، ما سيؤدي إلى محو أي حالة حالية يتم تخزينها.
على منصات الويب، يتم تخزين حالة مصادقة المستخدم في
IndexedDB.
يمكنك تغيير الثبات لتخزين البيانات في مساحة التخزين المحلية باستخدام Persistence.LOCAL.
إذا لزم الأمر، يمكنك تغيير هذا السلوك التلقائي إلى الاحتفاظ بحالة المصادقة للجلسة الحالية فقط، أو عدم الاحتفاظ بها على الإطلاق. لضبط هذه الإعدادات، استخدِم الطريقة التالية FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);.
لا يزال بإمكانك تعديل الثبات لكل مثيل من Auth باستخدام 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);
الخطوات التالية
اطّلِع على الأدلة حول تسجيل الدخول وتسجيل المستخدمين باستخدام خدمات الهوية والمصادقة المتوافقة.