Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

کاربران را در Firebase مدیریت کنید

یک کاربر ایجاد کنید

شما ایجاد یک کاربر جدید در پروژه Firebase خود را با تماس با CreateUserWithEmailAndPassword روش یا با ورود یک کاربر برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال، مانند Google وارد شوید و یا فیس بوک ورود .

شما همچنین می توانید کاربران جدید-رمز عبور تصدیق از بخش احراز هویت از ایجاد فایربیس کنسول ، در صفحه کاربر.

کاربر فعلی وارد شده را دریافت کنید

راه توصیه شده برای به دست آوردن کاربر فعلی تنظیم شنونده در شی Auth است:

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());
    } 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 . اگر یک کاربر به سیستم وارد نشده، current_user بازده nullptr.

اعتبار کاربر را حفظ کنید

پس از ورود کاربر به سیستم ، اعتبارنامه کاربر در کیستور محلی ذخیره می شود. با خروج از کاربر ، حافظه محلی اطلاعات کاربری حذف می شود. فروشگاه اصلی مخصوص پلت فرم است:

دریافت مشخصات کاربر

برای دریافت اطلاعات نمایه یک کاربر، استفاده از روش های دستیابی از یک نمونه از firebase::auth::User . مثلا:

firebase::auth::User* user = auth->current_user();
if (user != nullptr) {
  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 != nullptr) {
  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();
  }
}

نمایه کاربر را به روز کنید

شما می توانید نام و مشخصات تصویر کاربر اطلاعات مشخصات اساسی کاربر URL-با به روز رسانی UpdateUserProfile روش. مثلا:

firebase::auth::User* user = auth->current_user();
if (user != nullptr) {
  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 != nullptr) {
  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 != nullptr) {
  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);
}

شما می توانید قالب ایمیل است که در بخش احراز هویت از استفاده سفارشی فایربیس کنسول ، در ایمیل قالب صفحه. مشاهده قالب ایمیل در مرکز راهنمایی فایربیس.

رمز عبور کاربر را تنظیم کنید

شما می توانید رمز عبور کاربر با تنظیم UpdatePassword روش. مثلا:

firebase::auth::User* user = auth->current_user();
std::string newPassword = "SOME-SECURE-PASSWORD";

if (user != nullptr) {
  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 ارسال کنید.

حذف یک کاربر

شما می توانید یک حساب کاربری با حذف Delete روش. مثلا:

firebase::auth::User* user = auth->current_user();
if (user != nullptr) {
  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);
}

شما همچنین می توانید حذف کاربران از بخش احراز هویت از فایربیس کنسول ، در صفحه کاربر.

احراز هویت مجدد کاربر

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

هنگامی که این اتفاق می افتد، دوباره تأیید هویت کاربر با گرفتن ثبتنام جدید در اعتبار از کاربر و عبور از اعتبار به 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 != nullptr) {
  user->Reauthenticate(credential)
      .OnCompletion(
          [](const firebase::Future<void>& completed_future,
             void* user_data) {
            if (completed_future.error() == 0) {
              printf("User re-authenticated.");
            }
          },
          nullptr);
}

وارد کردن حساب های کاربری

شما می توانید حساب های کاربری را از یک فایل را به پروژه Firebase خود را با استفاده از فایربیس CLI را وارد auth:import فرمان. مثلا:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14