ابدأ باستخدام مصادقة Firebase على Flutter

قم بتوصيل تطبيقك بـ Firebase

قم بتثبيت وتهيئة Firebase SDKs for 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 Local Emulator Suite

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

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

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

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

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

  3. استخدام Local Emulator Suite UI للنماذج الأولية التفاعلية، أو REST API لمحاكي المصادقة للاختبارات غير التفاعلية.

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

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

يتوفر دليل تفصيلي على توصيل تطبيقك بمحاكي المصادقة . لمزيد من المعلومات، راجع مقدمة 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!');
    }
  });

يتم تشغيل الأحداث عند حدوث ما يلي:

  • مباشرة بعد تسجيل المستمع.
  • عندما يقوم المستخدم بتسجيل الدخول.
  • عندما يتم تسجيل خروج المستخدم الحالي.
  • عندما يكون هناك تغيير في الرمز المميز للمستخدم الحالي.

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()

حالة المصادقة المستمرة

توفر حزم Firebase SDK لجميع الأنظمة الأساسية دعمًا جاهزًا لضمان استمرار حالة مصادقة المستخدم عبر عمليات إعادة تشغيل التطبيق أو عمليات إعادة تحميل الصفحة.

على الأنظمة الأساسية الأصلية مثل 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);

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

استكشف الأدلة الخاصة بتسجيل الدخول وتسجيل المستخدمين باستخدام خدمات الهوية والمصادقة المدعومة.