אימות אנונימי ב-Firebase באמצעות C++‎

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

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

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

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

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

המחלקה Auth היא השער לכל הקריאות ל-API.
  1. מוסיפים את קובצי הכותרת 'אימות' ו'אפליקציה':
    #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());
      }
    }
    לחלופין, אם התוכנית שלכם מבוססת על אירועים, תוכלו לרשום קריאה חוזרת (callback) ב-Future.
  • המרה של חשבון אנונימי לחשבון קבוע

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

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

      כניסה באמצעות חשבון Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      התחברות ל-Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      כניסה באמצעות אימייל וסיסמה
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
    3. מעבירים את האובייקט auth::Credential אל של המשתמש שמבצע את הכניסה LinkWithCredential method:

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

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

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

    השלבים הבאים

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