קישור האפליקציה ל-Firebase
אם עדיין לא עשיתם זאת, מתקינים ומפעילים את Firebase SDKs for Flutter.
הוספת אימות ב-Firebase לאפליקציה
מהרמה הבסיסית (root) של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין:
flutter pub add firebase_authבסיום התהליך, צריך לבנות מחדש את אפליקציית Flutter:
flutter runמייבאים את הפלאגין לקוד Dart:
import 'package:firebase_auth/firebase_auth.dart';
כדי להשתמש בספק אימות, צריך להפעיל אותו במסוף Firebase. עוברים לדף 'שיטת כניסה' בקטע 'אימות' ב-Firebase כדי להפעיל כניסה באמצעות כתובת אימייל או סיסמה, וכל ספק זהויות אחר שרוצים להשתמש בו באפליקציה.
(אופציונלי) יצירת אב טיפוס ובדיקה באמצעות Firebase Local Emulator Suite
לפני שנדבר על האופן שבו האפליקציה מאמתת משתמשים, נציג קבוצה של כלים שבהם אפשר להשתמש כדי ליצור אב טיפוס ולבדוק את פונקציית האימות: Firebase Local Emulator Suite. אם אתם מתלבטים בין טכניקות וספקי אימות, מנסים מודלים שונים של נתונים עם נתונים ציבוריים ופרטיים באמצעות כללי אימות ואבטחה ב-Firebase, או יוצרים אב טיפוס של עיצובים לממשק משתמש של כניסה, כדאי לעבוד באופן מקומי בלי לפרוס שירותים פעילים.
אמולטור האימות הוא חלק מחבילת האמולטורים המקומיים, שמאפשרת לאפליקציה שלכם ליצור אינטראקציה עם תוכן ועם הגדרות של מסד נתונים שמופעל באמולטור, וגם עם משאבי הפרויקט שמופעלים באמולטור (פונקציות, מסדי נתונים אחרים וכללי אבטחה).
כדי להשתמש באמולטור האימות, צריך לבצע כמה שלבים פשוטים:
הוספת שורת קוד להגדרת הבדיקה של האפליקציה כדי להתחבר לאמולטור.
מהספרייה הראשית של פרויקט מקומי, מריצים את הפקודה
firebase emulators:start.אפשר להשתמש בממשק המשתמש של Local Emulator Suite ליצירת אב טיפוס אינטראקטיבי, או ב-REST API של אמולטור האימות לבדיקות לא אינטראקטיביות.
מתקשרים אל
useAuthEmulator()כדי לציין את הכתובת והיציאה של האמולטור:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
מדריך מפורט זמין במאמר חיבור האפליקציה לאמולטור האימות. מידע נוסף זמין במאמר מבוא ל-Local Emulator Suite.
עכשיו נמשיך ונראה איך מאמתים משתמשים.
בדיקת סטטוס האימות הנוכחי
אימות ב-Firebase מספק שיטות וכלי עזר רבים שמאפשרים לכם לשלב אימות מאובטח באפליקציית 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);.
עדיין אפשר לעדכן את ההתמדה של כל מופע אימות באמצעות 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);
השלבים הבאים
כדאי לעיין במדריכים בנושא כניסה והרשמה של משתמשים באמצעות שירותי הזהויות והאימות הנתמכים.