Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

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

می توانید با استفاده از تأیید اعتبار Firebase به کاربران اجازه دهید با استفاده از یک یا چند روش ورود به سیستم ، از جمله آدرس ایمیل و ورود به سیستم گذرواژه و ارائه دهندگان هویت فدرال مانند ورود به سیستم Google و ورود به سیستم ، وارد برنامه شما شوند. این آموزش با نشان دادن نحوه افزودن آدرس ایمیل و ورود به سیستم گذرواژه به برنامه ، شروع به کار تأیید اعتبار 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 بررسی کنید ، یا اگر در حال نوشتن یک بازی یا برنامه با نوعی حلقه به روزرسانی دوره ای هستید ، با نظرسنجی وضعیت در حلقه بروزرسانی.

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

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 تماس SignInWithEmailAndPassword :

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

نتیجه عملکرد ورود به سیستم را به همان روشی که نتیجه ثبت نام را بدست آورده اید ، دریافت کنید.

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

برای پاسخگویی به رویدادهای ورود به سیستم و خروج ، یک شنونده را به شی authent احراز هویت جهانی پیوست کنید. هر زمان وضعیت ورود به سیستم کاربر تغییر کند ، این شنونده تماس گرفته می شود. از آنجا که شنونده فقط پس از مقداردهی اولیه شی object احراز هویت و پس از اتمام تماس های شبکه ای ، بهترین مکان برای دریافت اطلاعات مربوط به کاربر به سیستم است.

با اجرای کلاس انتزاعی 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 شی object:

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

مراحل بعدی

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