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

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

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

قبل از اینکه بتوانید از Firebase Authentication استفاده کنید، باید:

  • پروژه ++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");
    }
    // ...
  }
};

شنونده را با firebase::auth::Auth روش AddAuthStateListener شی Auth:

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

مراحل بعدی

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