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

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

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

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

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

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

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

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

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

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

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

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

לדוגמה, שימוש ב-Future:

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");
    }
    // ...
  }
};

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

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

הצעדים הבאים

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