查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

התחל עם אימות 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 Local Emulator Suite

לפני שנדבר על האופן שבו האפליקציה שלך מאמתת משתמשים, הבה נציג קבוצה של כלים שבהם תוכל להשתמש כדי ליצור אבטיפוס ולבדוק את פונקציונליות האימות: Firebase Local Emulator Suite. אם אתה מחליט בין טכניקות וספקי אימות, לנסות מודלים שונים של נתונים עם נתונים ציבוריים ופרטיים באמצעות כללי אימות וכללי אבטחה של Firebase, או יצירת אב טיפוס של עיצובי ממשק משתמש לכניסה, היכולת לעבוד באופן מקומי מבלי לפרוס שירותים חיים יכול להיות רעיון מצוין .

אמולטור אימות הוא חלק מחבילת האמולטור המקומי, המאפשרת לאפליקציה שלך לקיים אינטראקציה עם תוכן מסד נתונים ותצורה מדומה, כמו גם משאבי הפרויקט המחויכים שלך (פונקציות, מסדי נתונים אחרים וכללי אבטחה).

השימוש באמולטור האימות כולל רק כמה שלבים:

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

מצב אימות מתמשך

ערכות ה-SDK של Firebase לכל הפלטפורמות מספקות תמיכה מהקופסה כדי להבטיח שמצב האימות של המשתמש שלך נמשך בכל הפעלה מחדש של אפליקציה או טעינת דפים מחדש.

בפלטפורמות מקוריות כמו אנדרואיד ו-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);

הצעדים הבאים

חקור את המדריכים לכניסה והרשמת משתמשים עם שירותי הזהות והאימות הנתמכים.