Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

اربط تطبيقك بـ Firebase

قم بتثبيت وتهيئة Firebase SDKs لـ 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);
    //...
    }
    

يتوفر دليل مفصل في 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!');
    }
  });

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

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

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 ، لا يكون هذا السلوك قابلاً للتكوين وستستمر حالة مصادقة المستخدم على الجهاز بين إعادة تشغيل التطبيق. يمكن للمستخدم مسح البيانات المخزنة مؤقتًا للتطبيقات باستخدام إعدادات الجهاز ، والتي ستمسح أي حالة موجودة يتم تخزينها.

في منصات الويب ، يتم تخزين حالة مصادقة المستخدم في قاعدة بيانات مفهرسة . يمكنك تغيير المثابرة لتخزين البيانات في التخزين المحلي باستخدام 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);

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

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