אתם יכולים להשתמש באימות ב-Firebase כדי ליצור חשבונות אנונימיים זמניים ולאמת אותם ב-Firebase. אפשר להשתמש בחשבונות האנונימיים הזמניים האלה כדי לאפשר למשתמשים שעדיין לא נרשמו לאפליקציה לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש אנונימי מחליט להירשם לאפליקציה, אתם יכולים לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בסשנים עתידיים.
לפני שמתחילים
אם עדיין לא עשיתם את זה, אתם צריכים לפעול לפי השלבים במדריך תחילת העבודה.
מפעילים כניסה אנונימית:
- בקטע Authentication במסוף Firebase, פותחים את הדף Sign in method.
- בדף שיטת הכניסה, מפעילים את השיטה כניסה אנונימית ולוחצים על שמירה.
אימות אנונימי באמצעות 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()של המשתמש שנכנס: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();