יצירת משתמש
יש ארבע דרכים ליצור משתמש חדש בפרויקט Firebase:
- קוראים ל-method
createUserWithEmailAndPassword()
. - כניסה של משתמש בפעם הראשונה באמצעות ספק זהויות מאוחד, כגון 'כניסה באמצעות חשבון Google', Facebook Login או Apple.
אפשר גם ליצור משתמשים חדשים שמאומתים באמצעות סיסמה בקטע Authentication (אימות) בדף Users (משתמשים) במסוף Firebase.
אחזור פרופיל של משתמש
כדי לקבל את פרטי הפרופיל של המשתמש, צריך להשתמש במאפיינים של User
. יש שלוש דרכים לקבל אובייקט User
שמייצג את המשתמש הנוכחי:
השידורים
authStateChanges
,idTokenChanges
ו-userChanges
: המאזינים יקבלו את הערך הנוכחי שלUser
, או את הערךnull
אם אף משתמש לא אומת:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
כשהאפליקציה מופעלת, מתרחש אירוע אחרי שחובריו של המשתמש (אם יש כאלה) מאחסון המקומי, כלומר, פונקציות ההאזנה תמיד נקראות כשמצב המשתמש מופעל. לאחר מכן, בכל פעם שמצב האימות ישתנה, יופעל אירוע חדש עם מצב המשתמש המעודכן.
כשמקשיב למצב האימות, אפשר ליצור ממשק משתמש שמגיב לשינויים האלה במצב האימות.
האובייקט
UserCredential
שמוחזר על ידי שיטות האימות (signIn
-): לאובייקטUserCredential
יש נכסuser
עם הערך הנוכחי שלUser
:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
המאפיין
currentUser
של המכונהFirebaseAuth
: אם אתם בטוחים שהמשתמש מחובר כרגע, תוכלו לגשת ל-User
מהמאפייןcurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
הערך
currentUser
יכול להיותnull
משתי סיבות:- המשתמש לא מחובר לחשבון.
- אתחול אובייקט ה-auth לא הסתיים. אם אתם משתמשים במאזין כדי לעקוב אחרי סטטוס הכניסה של המשתמש, אין צורך לטפל במקרה הזה.
קבלת פרטי פרופיל ספציפיים לספק המשתמש
כדי לקבל את פרטי הפרופיל שאוחזרו מספקי הכניסה שמקושרים אל
משתמש, צריך להשתמש במאפיין providerData
. לדוגמה:
if (user != null) {
for (final providerProfile in user.providerData) {
// ID of the provider (google.com, apple.com, etc.)
final provider = providerProfile.providerId;
// UID specific to the provider
final uid = providerProfile.uid;
// Name, email address, and profile photo URL
final name = providerProfile.displayName;
final emailAddress = providerProfile.email;
final profilePhoto = providerProfile.photoURL;
}
}
עדכון פרופיל של משתמש
אפשר לעדכן את פרטי הפרופיל הבסיסיים של משתמש – השם המוצג של המשתמש וכתובת ה-URL של תמונת הפרופיל שלו – באמצעות השיטות update
. לדוגמה:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
הגדרת כתובת האימייל של המשתמש
אפשר להגדיר כתובת אימייל של משתמש באמצעות השיטה updateEmail()
. לדוגמה:
await user?.updateEmail("janeq@example.com");
שליחת הודעת אימות למשתמש
אפשר לשלוח אימייל לאימות כתובת למשתמש עם
אמצעי תשלום אחד (sendEmailVerification()
). לדוגמה:
await user?.sendEmailVerification();
אפשר להתאים אישית את תבנית האימייל שבה נעשה שימוש בקטע 'אימות' ב- מסוף Firebase, בדף 'תבניות אימייל'. מידע נוסף זמין במאמר תבניות אימייל במרכז העזרה של Firebase.
אפשר גם להעביר מצב דרך המשך כתובת אתר כדי להפנות חזרה לאפליקציה כששולחים הודעת אימות.
בנוסף, אפשר להתאים את הודעת האימות לשפה המקומית על ידי עדכון קוד השפה במכונה של Auth לפני שליחת האימייל. לדוגמה:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
איך מגדירים סיסמה למשתמש
אפשר להגדיר סיסמה של משתמש באמצעות השיטה updatePassword()
. לדוגמה:
await user?.updatePassword(newPassword);
שליחת אימייל בנושא איפוס סיסמה
אפשר לשלוח למשתמש אימייל על איפוס סיסמה באמצעות sendPasswordResetEmail()
. לדוגמה:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
אפשר להתאים אישית את תבנית האימייל שמשמשת בקטע Authentication (אימות) במסוף Firebase, בדף Email Templates (תבניות אימייל). מידע נוסף זמין בקטע תבניות אימייל ב- מרכז העזרה של Firebase.
אפשר גם להעביר את המצב באמצעות כתובת URL להמשך כדי להפנות אוטומטית בחזרה לאפליקציה כששולחים אימייל לאיפוס הסיסמה.
בנוסף, אפשר להתאים את האימייל לאיפוס הסיסמה על ידי עדכון השפה במכונה לאימות לפני שליחת האימייל. לדוגמה:
await FirebaseAuth.instance.setLanguageCode("fr");
אפשר גם לשלוח אימיילים לאיפוס סיסמה ממסוף Firebase.
מחיקת משתמש
אפשר למחוק חשבון משתמש באמצעות השיטה delete()
. לדוגמה:
await user?.delete();
אפשר גם למחוק משתמשים מהקטע Authentication (אימות) בדף Users (משתמשים) במסוף Firebase.
אימות מחדש של משתמש
כדי לבצע פעולות מסוימות שקשורות לאבטחה, כמו מחיקת חשבון, הגדרת כתובת אימייל ראשית ושינוי סיסמה, המשתמש צריך להיכנס לחשבון לאחרונה. אם מבצעים אחת מהפעולות האלה והמשתמש נכנס לחשבון לפני זמן רב מדי, הפעולה נכשלת ונזרק אירוע FirebaseAuthException
עם הקוד requires-recent-login
.
במקרה כזה, כדי לאמת מחדש את המשתמש צריך לקבל פרטי כניסה חדשים
מהמשתמש ומעבירים את פרטי הכניסה אל reauthenticate
. לדוגמה:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
ייבוא חשבונות משתמשים
אפשר לייבא חשבונות משתמשים מקובץ לפרויקט Firebase באמצעות הפקודה auth:import
ב-CLI של Firebase. לדוגמה:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14