אתם יכולים להשתמש ב-Firebase Authentication כדי ליצור חשבונות אנונימיים זמניים ולאמת אותם ב-Firebase. אפשר להשתמש בחשבונות האנונימיים הזמניים האלה כדי לאפשר למשתמשים שעדיין לא נרשמו לאפליקציה לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש לא רשום מחליט להירשם לאפליקציה שלכם, אתם יכולים לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בהפעלות הבאות.
לפני שמתחילים
- מוסיפים את Firebase לפרויקט ב-JavaScript.
- אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, אתם יכולים לעשות זאת דרך מסוף Firebase.
- הפעלת אימות אנונימי:
- במסוף Firebase, פותחים את הקטע אימות.
- בדף שיטות כניסה, מפעילים את שיטת הכניסה אנונימית.
- אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים להפעיל ניקוי אוטומטי. כשמפעילים את ההגדרה הזו, חשבונות אנונימיים שנוצרו לפני יותר מ-30 יום נמחקים באופן אוטומטי. בפרויקטים שבהם מופעלת ניקוי אוטומטי, אימות אנונימי לא ייספר יותר במגבלות השימוש או במכסות החיוב. מידע נוסף זמין במאמר בנושא ניקוי אוטומטי.
אימות אנונימי באמצעות Firebase
כשמשתמש לא מחובר משתמש בתכונה באפליקציה שדורשת אימות באמצעות Firebase, צריך להשלים את השלבים הבאים כדי לחבר את המשתמש באופן אנונימי:
- מבצעים קריאה ל-
signInAnonymously:כאן גם אפשר לזהות ולטפל בשגיאות. רשימה של קודי שגיאה זמינה במסמכי העזר בנושא אימות.Web
import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
Web
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- אם השיטה
signInAnonymouslyמסתיימת ללא שגיאה, האובייקט observer שרשום ב-onAuthStateChangedיופעל ותוכלו לקבל את נתוני החשבון של המשתמש האנונימי מהאובייקטUser:Web
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
המרת חשבון אנונימי לחשבון קבוע
כשמשתמש לא רשום נרשם לאפליקציה שלכם, יכול להיות שתרצו לאפשר לו להמשיך את העבודה עם החשבון החדש שלו. לדוגמה, יכול להיות שתרצו שהפריטים שהמשתמש הוסיף לעגלת הקניות לפני שהוא נרשם יהיו זמינים בעגלת הקניות של החשבון החדש שלו. כדי לעשות זאת, מבצעים את השלבים הבאים:
- כשמשתמש נרשם, צריך להשלים את תהליך הכניסה של ספק האימות של המשתמש עד לשלב של קריאה לאחת משיטות
Auth.signInWith, אבל לא כולל אותו. לדוגמה, קבלת טוקן מזהה של Google, טוקן גישה של פייסבוק או כתובת אימייל וסיסמה של המשתמש. מקבלים
AuthCredentialעבור ספק האימות החדש:כניסה באמצעות חשבון Google
Web
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Web
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
התחברות באמצעות חשבון Facebook
Web
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Web
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
כניסה באמצעות כתובת אימייל וסיסמה
Web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
מעבירים את האובייקט
AuthCredentialלשיטהlinkשל המשתמש שנכנס:Web
import { getAuth, linkWithCredential } from "firebase/auth"; const auth = getAuth(); linkWithCredential(auth.currentUser, credential) .then((usercred) => { const user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
Web
auth.currentUser.linkWithCredential(credential) .then((usercred) => { var user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
אם הקריאה אל link מצליחה, המשתמש בחשבון החדש יכול לגשת לנתוני Firebase של החשבון האנונימי.
ניקוי אוטומטי
אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, תוכלו להפעיל ניקוי אוטומטי במסוף Firebase. כשמפעילים את התכונה הזו, מאפשרים ל-Firebase למחוק באופן אוטומטי חשבונות אנונימיים שנוצרו לפני יותר מ-30 יום. בפרויקטים שבהם מופעל ניקוי אוטומטי, אימות אנונימי לא נספר במגבלות השימוש או במכסות החיוב.
- כל חשבון אנונימי שנוצר אחרי הפעלת הניקוי האוטומטי עשוי להימחק אוטומטית בכל שלב אחרי 30 יום ממועד היצירה.
- חשבונות אנונימיים קיימים יהיו כשירים למחיקה אוטומטית 30 ימים אחרי הפעלת הניקוי האוטומטי.
- אם משביתים את הניקוי האוטומטי, חשבונות אנונימיים שנקבעה להם מחיקה יישארו ברשימת החשבונות שמיועדים למחיקה.
- אם 'משדרגים' חשבון אנונימי על ידי קישור שלו לשיטת כניסה כלשהי, החשבון לא יימחק באופן אוטומטי.
אם אתם רוצים לראות כמה משתמשים יושפעו לפני שתפעילו את התכונה הזו, ושדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, תוכלו לסנן לפי is_anon ב-Cloud Logging.
השלבים הבאים
עכשיו, אחרי שהמשתמשים יכולים לעבור אימות באמצעות Firebase, אתם יכולים לשלוט בגישה שלהם לנתונים במסד הנתונים של Firebase באמצעות כללי Firebase.