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

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

לפני שאתה מתחיל

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

בצע אימות אנונימי עם Firebase

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

  1. קרא לשיטת signInAnonymously :

    Web modular API

    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 namespaced API

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    זה גם המקום שבו אתה יכול לתפוס ולטפל בשגיאות. לקבלת רשימה של קודי שגיאה, עיין ב- Auth Reference Docs .
  2. אם השיטה signInAnonymously מסתיימת ללא שגיאה, הצופה הרשום ב- onAuthStateChanged יופעל ותוכל לקבל את נתוני החשבון של המשתמש האנונימי מאובייקט User :

    Web modular API

    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 namespaced API

    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 ID של המשתמש, אסימון הגישה לפייסבוק או כתובת דוא"ל וסיסמה.
  2. קבל AuthCredential עבור ספק האימות החדש:

    כניסה לגוגל

    Web modular API

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web namespaced API

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    כניסה לפייסבוק

    Web modular API

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web namespaced API

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    כניסה עם סיסמת דוא"ל

    Web modular API

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web namespaced API

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. העבירו את האובייקט AuthCredential לשיטת link של משתמש הכניסה:

    Web modular API

    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 namespaced API

    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 עם Identity Platform , תוכל להפעיל ניקוי אוטומטי במסוף Firebase. כשאתה מפעיל את התכונה הזו אתה מאפשר ל-Firebase למחוק אוטומטית חשבונות אנונימיים מעל 30 יום. בפרויקטים עם ניקוי אוטומטי מופעל, אימות אנונימי לא ייחשב במסגרת מגבלות השימוש או מכסות החיוב.

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

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

הצעדים הבאים

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