בעזרת אימות ב-Firebase אפשר ליצור חשבונות אנונימיים זמניים ולהשתמש בהם צריך לבצע אימות ב-Firebase. אפשר להשתמש בחשבונות האנונימיים הזמניים האלה כדי לאפשר למשתמשים שעדיין לא נרשמו לאפליקציה שלכם לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש אנונימי מחליט להירשם לאפליקציה, אתם יכולים לקשר את פרטי הכניסה שלהם לחשבון האנונימי, כדי כדי שיוכלו להמשיך לעבוד עם הנתונים המוגנים שלהם בסשנים עתידיים.
לפני שמתחילים
אם עדיין לא עשיתם זאת, יש לפעול לפי השלבים המפורטים במדריך תחילת העבודה.
הפעלת כניסה אנונימית:
- בקטע Authentication (אימות) במסוף Firebase, פותחים את שיטת כניסה הדף הזה.
- בדף Sign in method, מפעילים את השיטה Anonymous sign-in ולוחצים על Save.
אימות אנונימי ב-Firebase
כשמשתמש שלא מחובר לחשבון משתמש בתכונה באפליקציה שמחייבת אימות באמצעות
Firebase, כניסה למשתמש באופן אנונימי באמצעות קריאה ל-signInAnonymously()
:
try {
final userCredential =
await FirebaseAuth.instance.signInAnonymously();
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "operation-not-allowed":
print("Anonymous auth hasn't been enabled for this project.");
break;
default:
print("Unknown error.");
}
}
המרה של חשבון אנונימי לחשבון קבוע
כשמשתמש אנונימי נרשם לאפליקציה, כדאי לאפשר לו להמשיך לעבוד עם החשבון החדש שלו. לדוגמה, כדאי להפוך את הפריטים שהמשתמש הוסיף לעגלת הקניות לפני ההרשמה לזמינים בעגלת הקניות של החשבון החדש. כדי לעשות את זה, מבצעים את הפעולות הבאות שלבים:
כשהמשתמש נרשם, משלימים את תהליך הכניסה לחשבון ספק אימות עד, אך לא כולל, התקשרות לאחד
signInWith
- שיטות. לדוגמה, משיגים את האסימון המזהה של המשתמש ב-Google, אסימון גישה של Facebook, או כתובת אימייל וסיסמה.מקבלים אובייקט
Credential
של ספק האימות החדש:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
מעבירים את האובייקט
Credential
אלlinkWithCredential()
של המשתמש שמחובר לחשבון method:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
אם הקריאה אל linkWithCredential()
תתבצע בהצלחה, החשבון החדש של המשתמש יוכל
לגשת לנתוני Firebase של החשבון האנונימי.
השלבים הבאים
אחרי שמשתמש יוצר חשבון חדש, החשבון הזה נשמר כחלק מהפרויקט ב-Firebase, וניתן להשתמש בו כדי לזהות משתמש בכל האפליקציות בפרויקט, ללא קשר לשיטת הכניסה שבה המשתמש השתמש.
באפליקציות שלכם, תוכלו לקבל את פרטי הפרופיל הבסיסיים של המשתמש דרך
אובייקט User
. ניהול משתמשים
במסגרת כללי האבטחה של Firebase Realtime Database ושל Cloud Storage, אפשר לקבל את מזהה המשתמש הייחודי של המשתמש שנכנס לחשבון מהמשתנה auth
, ולהשתמש בו כדי לקבוע לאילו נתונים למשתמש תהיה גישה.
אתם יכולים לאפשר למשתמשים להיכנס לאפליקציה באמצעות כמה ספקי אימות על ידי קישור פרטי הכניסה של ספק האימות לחשבון משתמש קיים.
כדי לצאת ממשתמש, צריך להתקשר אל signOut()
:
await FirebaseAuth.instance.signOut();