אימות אנונימי ב-Firebase באמצעות JavaScript

יש לך אפשרות להשתמש ב-Firebase Authentication כדי ליצור חשבונות אנונימיים זמניים ולהשתמש בהם צריך לבצע אימות ב-Firebase. ניתן להשתמש בחשבונות האנונימיים הזמניים האלה כדי מאפשרת למשתמשים שעדיין לא נרשמו לאפליקציה לעבוד עם הגנה על נתונים באמצעות כללי אבטחה. אם משתמש אנונימי מחליט להירשם לאפליקציה, תוכלו לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בסשנים עתידיים.

לפני שמתחילים

  1. מוסיפים את Firebase לפרויקט JavaScript.
  2. אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, צריך לעשות זאת דרך מסוף Firebase.
  3. הפעלת אימות אנונימי:
    1. במסוף Firebase, פותחים את הקטע אימות.
    2. בדף שיטות כניסה, מפעילים את האפשרות אנונימית. שיטת כניסה לחשבון.
    3. אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, תוכלו להפעיל את הניקוי האוטומטי. מתי אם תפעילו את ההגדרה הזו, חשבונות אנונימיים מלפני יותר מ-30 יום יועברו אוטומטית נמחק. בפרויקטים שבהם הפעלתם את הניקוי האוטומטי, אימות אנונימי לא ייספר יותר במסגרת מגבלות השימוש או המכסות לחיוב. צפייה ניקוי אוטומטי.

אימות עם Firebase באופן אנונימי

כשמשתמש שלא מחובר לחשבון משתמש בתכונה באפליקציה שמחייבת אימות באמצעות ב-Firebase, מבצעים את הפעולות הבאות כדי להיכנס למשתמש באופן אנונימי:

  1. קוראים ל-method‏ 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;
        // ...
      });
    כאן גם תוכלו לזהות שגיאות ולטפל בהן. רשימה של קודי שגיאה מופיעה במאמר חומר העזר בנושא אימות.
  2. אם השיטה signInAnonymously מסתיימת ללא שגיאה, המתבונן שמופיע ב-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
        // ...
      }
    });

המרה של חשבון אנונימי לחשבון קבוע

כשמשתמש אנונימי נרשם לאפליקציה שלך, כדאי לאפשר לו להמשיך את העבודה עם החשבון החדש, לדוגמה, להגדיר את הפריטים שהמשתמש הוסיף לעגלת הקניות לפני ההרשמה זמינים בעגלת הקניות בחשבון החדש. כדי לעשות את זה, מבצעים את הפעולות הבאות שלבים:

  1. כשהמשתמש נרשם, משלימים את תהליך הכניסה לחשבון ספק אימות עד, אך לא כולל, התקשרות לאחד Auth.signInWith אמצעי תשלום. לדוגמה, אחזור של אסימון מזהה של המשתמש ב-Google, אסימון גישה של המשתמש ב-Facebook או כתובת האימייל והסיסמה של המשתמש.
  2. קבלת 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);
  3. מעבירים את האובייקט AuthCredential אל של המשתמש שמבצע את הכניסה link method:

    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 רישום ביומן.

השלבים הבאים

עכשיו, שהמשתמשים יכולים לבצע אימות באמצעות Firebase, יש לך אפשרות לשלוט בגישה שלהם אל במסד הנתונים של Firebase באמצעות כללים ב-Firebase.