یک کاربر ایجاد کنید
شما با فراخوانی روش CreateUserWithEmailAndPassword
یا با ورود به سیستم کاربر برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال، مانند Google Sign-In یا Facebook Login ، یک کاربر جدید در پروژه Firebase خود ایجاد می کنید.
همچنین میتوانید از بخش احراز هویت کنسول Firebase در صفحه کاربران، کاربران تأیید شده با رمز عبور جدید ایجاد کنید.
کاربر وارد شده فعلی را دریافت کنید
راه پیشنهادی برای دریافت کاربر فعلی با تنظیم شنونده در شیء Auth است:
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()); } else { // User is signed out printf("OnAuthStateChanged: signed_out\n"); } // ... } }; // ... initialization code // Test notification on registration. MyAuthStateListener state_change_listener; auth->AddAuthStateListener(&state_change_listener);
با استفاده از شنونده، وقتی کاربر فعلی را دریافت میکنید، مطمئن میشوید که شی Auth در یک حالت میانی (مانند مقداردهی اولیه) نیست.
همچنین می توانید با تماس با current_user
کاربر وارد شده فعلی را دریافت کنید. اگر کاربری وارد نشده باشد، روش is_valid
کاربر false را برمیگرداند.
اعتبار یک کاربر را حفظ کنید
پس از ورود کاربر به سیستم، اطلاعات کاربری کاربر در فروشگاه کلید محلی ذخیره می شود. حافظه پنهان محلی اطلاعات کاربری را می توان با خروج از سیستم حذف کرد. فروشگاه کلید مخصوص پلتفرم است:
- پلتفرم های اپل: خدمات زنجیره کلید .
- Android: Android Keystore .
- Windows: Credential Management API .
- OS X: خدمات زنجیره کلید .
- لینوکس: libsecret که کاربر باید آن را نصب کرده باشد.
پروفایل کاربری را دریافت کنید
برای دریافت اطلاعات نمایه کاربر، از روش های دسترسی نمونه ای از firebase::auth::User
استفاده کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { std::string name = user.display_name(); std::string email = user.email(); std::string photo_url = user.photo_url(); // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use firebase::auth::User::Token() instead. std::string uid = user.uid(); }
اطلاعات نمایه ارائه دهنده خاص کاربر را دریافت کنید
برای دریافت اطلاعات نمایه بازیابی شده از ارائه دهندگان ورود به سیستم مرتبط با یک کاربر، از روش ProviderData
استفاده کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { for (auto it = user.provider_data().begin(); it != user.provider_data().end(); ++it) { firebase::auth::UserInfoInterface profile = *it; // Id of the provider (ex: google.com) std::string providerId = profile.provider_id(); // UID specific to the provider std::string uid = profile.uid(); // Name, email address, and profile photo Url std::string name = profile.display_name(); std::string email = profile.email(); std::string photoUrl = profile.photo_url(); } }
به روز رسانی نمایه یک کاربر
با روش UpdateUserProfile
می توانید اطلاعات اولیه نمایه کاربر - نام نمایشی کاربر و URL عکس نمایه کاربر - را به روز کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { firebase::auth::User::UserProfile profile; profile.display_name = "Jane Q. User"; profile.photo_url = "https://example.com/jane-q-user/profile.jpg"; user.UpdateUserProfile(profile).OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { // We are probably in a different thread right now. if (completed_future.error() == 0) { printf("User profile updated."); } }, nullptr); // pass user_data here. }
آدرس ایمیل کاربر را تنظیم کنید
می توانید آدرس ایمیل کاربر را با روش UpdateEmail
تنظیم کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { user.UpdateEmail("user@example.com") .OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { // We are probably in a different thread right now. if (completed_future.error() == 0) { printf("User email address updated."); } }, nullptr); }
یک ایمیل تأیید برای کاربر ارسال کنید
می توانید با روش SendEmailVerification
یک ایمیل تأیید آدرس برای کاربر ارسال کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { user.SendEmailVerification().OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { // We are probably in a different thread right now. if (completed_future.error() == 0) { printf("Email sent."); } }, nullptr); }
میتوانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
رمز عبور یک کاربر را تنظیم کنید
می توانید رمز عبور کاربر را با روش UpdatePassword
تعیین کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); std::string newPassword = "SOME-SECURE-PASSWORD"; if (user.is_valid()) { user.UpdatePassword(newPassword.c_str()) .OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { // We are probably in a different thread right now. if (completed_future.error() == 0) { printf("password updated."); } }, nullptr); }
یک ایمیل بازنشانی رمز عبور ارسال کنید
می توانید با روش SendPasswordResetEmail
یک ایمیل بازنشانی رمز عبور برای کاربر ارسال کنید. به عنوان مثال:
std::string emailAddress = "user@example.com"; auth->SendPasswordResetEmail(emailAddress.c_str()) .OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { // We are probably in a different thread right now. if (completed_future.error() == 0) { // Email sent. } else { // An error happened. printf("Error %d: %s", completed_future.error(), completed_future.error_message()); } }, nullptr);
میتوانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
همچنین میتوانید ایمیلهای بازنشانی رمز عبور را از کنسول Firebase ارسال کنید.
حذف یک کاربر
با روش Delete
می توانید یک حساب کاربری را حذف کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); if (user.is_valid()) { user.Delete().OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { if (completed_future.error() == 0) { // User deleted. } else { // An error happened. printf("Error %d: %s", completed_future.error(), completed_future.error_message()); } }, nullptr); }
همچنین میتوانید کاربران را از بخش تأیید هویت کنسول Firebase در صفحه کاربران حذف کنید.
احراز هویت مجدد یک کاربر
برخی از اقدامات حساس امنیتی - مانند حذف یک حساب ، تنظیم یک آدرس ایمیل اصلی و تغییر رمز عبور - مستلزم این است که کاربر اخیراً وارد سیستم شده باشد. اگر یکی از این اقدامات را انجام دهید و کاربر خیلی وقت پیش وارد سیستم شده باشد، عمل شکست می خورد
وقتی این اتفاق میافتد، با دریافت اعتبارنامه ورود به سیستم جدید از کاربر و ارسال اعتبار به Reauthenticate
کاربر را دوباره احراز هویت کنید. به عنوان مثال:
firebase::auth::User user = auth->current_user(); // Get auth credentials from the user for re-authentication. The example // below shows email and password credentials but there are multiple // possible providers, such as GoogleAuthProvider or FacebookAuthProvider. firebase::auth::Credential credential = firebase::auth::EmailAuthProvider::GetCredential("user@example.com", "password1234"); if (user.is_valid()) { user.Reauthenticate(credential) .OnCompletion( [](const firebase::Future<void>& completed_future, void* user_data) { if (completed_future.error() == 0) { printf("User re-authenticated."); } }, nullptr); }
وارد کردن حساب های کاربری
با استفاده از دستور auth:import
در Firebase CLI می توانید حساب های کاربری را از یک فایل به پروژه Firebase وارد کنید. به عنوان مثال:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14