התחל בעבודה עם אימות Firebase ב- C ++

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

חבר את פרויקט C ++ שלך ל- Firebase

לפני שתוכל להשתמש באימות Firebase , עליך:

  • רשום את פרויקט C ++ שלך והגדר אותו לשימוש ב- Firebase.

    אם פרויקט C ++ שלך כבר משתמש ב- Firebase, הוא כבר רשום ומוגדר עבור Firebase.

  • מוסיפים את Firebase C ++ SDK לפרויקט ++ C שלך.

שימו לב כי הוספת Firebase ל- C ++ שלך פרויקט כולל משימות הן Firebase הקונסולה וב C ++ לפרויקט פתוח (למשל, אתה מוריד קבצי config Firebase מהמסוף, ולאחר מכן להעביר אותם לתוך C ++ שלך פרויקט).

הרשמה משתמשים חדשים

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

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPassword(email, password);

אתה יכול לבדוק את מצב פעולת חשבון יצירה ידי רישום התקשרות על CreateUserWithEmailAndPasswordLastResult אובייקט העתיד, או, אם אתה כותב משחק או אפליקציה עם במעין לולאת עדכון תקופתי, לפי סקרים מעמדים בלולאת העדכון.

לדוגמה, שימוש בעתיד:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

או, כדי להשתמש בסקרים, בצע משהו כמו הדוגמה הבאה בלולאת העדכונים של המשחק שלך:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

היכנס למשתמשים קיימים

צור טופס המאפשר למשתמשים קיימים להיכנס באמצעות כתובת הדוא"ל והסיסמה שלהם. כשמשתמש משלים את הטופס, להתקשר SignInWithEmailAndPassword השיטה:

firebase::Future<firebase::auth::User*> result =
    auth->SignInWithEmailAndPassword(email, password);

קבל את התוצאה של פעולת הכניסה באותו אופן שבו קיבלת את תוצאת ההרשמה.

הגדר מאזין למצב אימות וקבל נתוני חשבון

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

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

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user->uid().c_str());
      const std::string displayName = user->DisplayName();
      const std::string emailAddress = user->Email();
      const std::string photoUrl = user->PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

צרף את המאזין עם firebase::auth::Auth של האובייקט AddAuthStateListener השיטה:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

הצעדים הבאים

למד כיצד להוסיף תמיכה עבור ספקי זהות אחרים וחשבונות אורח אנונימיים: