با Firebase Authentication در C++ شروع کنید

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

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

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

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

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

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

توجه داشته باشید که افزودن Firebase به پروژه C++ شما شامل وظایفی هم در کنسول Firebase و هم در پروژه C++ باز شما می شود (به عنوان مثال، فایل های پیکربندی Firebase را از کنسول دانلود می کنید، سپس آنها را به پروژه C++ خود منتقل می کنید).

ثبت نام کاربران جدید

فرمی ایجاد کنید که به کاربران جدید امکان می دهد با استفاده از آدرس ایمیل و رمز عبور در برنامه شما ثبت نام کنند. هنگامی که کاربر فرم را تکمیل کرد، آدرس ایمیل و رمز عبور ارائه شده توسط کاربر را تأیید کنید، سپس آنها را به روش CreateUserWithEmailAndPassword ارسال کنید:

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

می‌توانید وضعیت عملیات ایجاد حساب را با ثبت یک تماس در شیء CreateUserWithEmailAndPasswordLastResult Future یا اگر در حال نوشتن یک بازی یا برنامه با نوعی حلقه به‌روزرسانی دوره‌ای هستید، با نظرسنجی وضعیت در حلقه به‌روزرسانی بررسی کنید.

به عنوان مثال، استفاده از Future:

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& 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::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::AuthResult* auth_result = *result.result();
    printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

ورود کاربران موجود

فرمی ایجاد کنید که به کاربران موجود اجازه دهد با استفاده از آدرس ایمیل و رمز عبور خود وارد سیستم شوند. وقتی کاربر فرم را تکمیل کرد، روش SignInWithEmailAndPassword را فراخوانی کنید:

firebase::Future<firebase::auth::AuthResult> 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.is_valid()) {
      // 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);

مراحل بعدی

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