بدء مصادقة Firebase على Flutter

ربط تطبيقك بمنصّة Firebase

تثبيت حِزم تطوير البرامج (SDK) لمنصة Firebase وإعدادها من أجل Flutter، إذا لم يسبق لك إجراء ذلك إذًا.

إضافة مصادقة Firebase إلى تطبيقك

  1. من جذر مشروع Flutter، نفِّذ الأمر التالي لتثبيت. المكون الإضافي:

    flutter pub add firebase_auth
    
  2. بعد إكمال الخطوات، أعِد إنشاء تطبيق Flutter:

    flutter run
    
  3. قم باستيراد المكون الإضافي في تعليمة Dart الخاصة بك:

    import 'package:firebase_auth/firebase_auth.dart';
    

ولاستخدام موفِّر مصادقة، عليك تفعيله في وحدة تحكُّم Firebase. انتقِل إلى صفحة "طريقة تسجيل الدخول" في قسم مصادقة Firebase لتفعيلها. تسجيل الدخول باستخدام عنوان البريد الإلكتروني أو كلمة المرور وأي موفِّري الهوية الآخرين الذين تريدهم لتطبيقك.

(اختياري) إنشاء نموذج أولي واختباره باستخدام "حزمة أدوات المحاكاة المحلية من Firebase"

قبل الحديث عن آلية تطبيقك في المصادقة على المستخدمين، إليك مجموعة من في الأدوات التي يمكنك استخدامها لإنشاء نموذج أولي واختبار وظيفة المصادقة: مجموعة أدوات المحاكاة المحلية في Firebase إذا كنت بصدد اتخاذ قرار من بين أساليب المصادقة ومقدمي الخدمات، وتجربة نماذج بيانات مختلفة باستخدام بيانات عامة وخاصة باستخدام قواعد أمان Firebase والمصادقة، أو إنشاء نماذج أولية لتصميمات واجهة المستخدم لتسجيل الدخول، والقدرة على أن يكون العمل محليًا دون نشر خدمات مباشرة قد يكون فكرة رائعة.

يُعد محاكي المصادقة جزءًا من مجموعة أدوات المحاكاة المحلية، التي لتطبيقك من التفاعل مع محتوى قواعد البيانات التي تمت محاكاتها وإعداداتها، بالإضافة إلى موارد المشروع التي تمت محاكاتها (الدوال وقواعد البيانات الأخرى وقواعد الأمان).

يتضمن استخدام محاكي المصادقة بضع خطوات فقط:

  1. إضافة سطر من الرمز إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي.

  2. من جذر دليل المشروع المحلي، مع تشغيل firebase emulators:start.

  3. استخدام واجهة مستخدم مجموعة أدوات المحاكاة المحلية لإنشاء النماذج الأولية التفاعلية، أو واجهة برمجة تطبيقات REST لمحاكي المصادقة للاختبار غير التفاعلي

  4. يمكنك طلب useAuthEmulator() لتحديد عنوان المحاكي والمنفذ:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

يتوفّر دليل تفصيلي في ربط تطبيقك بمحاكي المصادقة. لمزيد من المعلومات، اطّلِع على مقدمة عن مجموعة أدوات المحاكاة المحلية.

لننتقل الآن إلى كيفية مصادقة المستخدمين.

التحقّق من حالة المصادقة الحالية

توفّر مصادقة Firebase العديد من الطرق والأدوات لتمكينك من دمج مصادقة آمنة في تطبيق Flutter الجديد أو الحالي بعدة طرق يجب معرفة حالة المصادقة للمستخدم مثلاً، ما إذا كان قد تم تسجيل دخوله أو تسجيل الخروج منه

تتيح لك مصادقة Firebase الاشتراك في الوقت الفعلي في هذه الحالة من خلال 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);. لا يزال بإمكانك تعديل معدّل الحفاظ على البيانات لكل نسخة افتراضية من المصادقة باستخدام 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);

الخطوات التالية

اطّلِع على الأدلة حول تسجيل الدخول والاشتراك للمستخدمين من خلال الميزات المتوافقة. خدمات الهوية والمصادقة.