با احراز هویت Firebase در C ++ شروع کنید

شما می توانید از احراز هویت Firebase استفاده کنید تا به کاربران اجازه دهید با استفاده از یک یا چند روش ورود به سیستم ، از جمله آدرس ایمیل و رمز ورود ، و ارائه دهندگان هویت فدرال مانند ورود به سیستم Google و ورود به سیستم فیس بوک ، وارد برنامه شما شوند. این آموزش با نشان دادن نحوه افزودن آدرس ایمیل و ورود رمز عبور به برنامه خود ، شما را با احراز هویت Firebase آغاز می کند.

پروژه ++ C خود را به Firebase متصل کنید

قبل از اینکه شما می توانید استفاده کنید فایربیس احراز هویت ، شما نیاز به:

  • پروژه ++ C خود را ثبت کرده و پیکربندی کنید تا از Firebase استفاده کند.

    اگر پروژه C ++ شما قبلاً از Firebase استفاده می کند ، قبلاً برای Firebase ثبت شده و پیکربندی شده است.

  • اضافه کردن فایربیس C ++ SDK را به پروژه C ++ خود را.

توجه داشته باشید که اضافه کردن فایربیس به C ++ خود را پروژه شامل وظایف هر دو در فایربیس کنسول و C پروژه خود را باز ++ (به عنوان مثال، شما دانلود فایل های پیکربندی فایربیس از کنسول، و سپس حرکت آنها را به 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);

مراحل بعدی

نحوه افزودن پشتیبانی برای سایر ارائه دهندگان هویت و حسابهای مهمان ناشناس را بیاموزید: