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

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

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

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

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

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

מחלקת Auth היא השער לכל קריאות ה-API.
  1. הוסף את קובצי ה-Auth ו-App header:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. בקוד האתחול שלך, צור מחלקה firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. רכוש את מחלקת firebase::auth::Auth עבור firebase::App שלך. יש מיפוי אחד לאחד בין App ו- Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • התקשר Auth::SignInAnonymously .
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • אם לתוכנית שלך יש לולאת עדכון שפועלת באופן קבוע (נניח 30 או 60 פעמים בשנייה), אתה יכול לבדוק את התוצאות פעם אחת בכל עדכון עם Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    או, אם התוכנית שלך מונעת על ידי אירועים, אולי תעדיף כדי לרשום התקשרות חוזרת על העתיד .
  • המרת חשבון אנונימי לחשבון קבוע

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

    1. כאשר המשתמש נרשם, השלם את זרימת הכניסה עבור ספק האימות של המשתמש עד, אך לא כולל, קריאה לאחת משיטות Auth::SignInWith . לדוגמה, קבל את אסימון ה-Google ID של המשתמש, אסימון הגישה לפייסבוק או כתובת דוא"ל וסיסמה.
    2. קבל auth::Credential עבור ספק האימות החדש:

      כניסה של Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      כניסה לפייסבוק
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      כניסה לסיסמא דוא"ל
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. העבר את אובייקט auth::Credential לשיטת LinkWithCredential של משתמש הכניסה:

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);
      

    אם השיחה ל- LinkWithCredential תצליח, החשבון החדש של המשתמש יכול לגשת לנתוני Firebase של החשבון האנונימי.

    ניקוי אוטומטי

    אם שדרגת את הפרויקט שלך לאימות Firebase עם Identity Platform , תוכל להפעיל ניקוי אוטומטי במסוף Firebase. כשאתה מפעיל את התכונה הזו אתה מאפשר ל-Firebase למחוק אוטומטית חשבונות אנונימיים מעל 30 יום. בפרויקטים עם ניקוי אוטומטי מופעל, אימות אנונימי לא ייחשב במסגרת מגבלות השימוש או מכסות החיוב.

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

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

    הצעדים הבאים

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