میتوانید از 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);
مراحل بعدی
با نحوه افزودن پشتیبانی برای سایر ارائه دهندگان هویت و حساب های مهمان ناشناس آشنا شوید: