Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

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

شما با فراخوانی createUserWithEmail:password:completion: یا با ورود کاربر برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال، مانند Google Sign-In یا Facebook Login ، یک کاربر جدید در پروژه Firebase خود ایجاد می کنید.

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

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

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

سریع

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

هدف-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

با استفاده از شنونده، وقتی کاربر فعلی را دریافت می‌کنید، مطمئن می‌شوید که شی Auth در یک حالت میانی (مانند مقداردهی اولیه) نیست.

همچنین می توانید با استفاده از ویژگی currentUser کاربر وارد شده فعلی را دریافت کنید. اگر کاربر وارد سیستم نشده باشد، currentUser صفر است:

سریع

if Auth.auth().currentUser != nil {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

هدف-C

if ([FIRAuth auth].currentUser) {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

پروفایل کاربری را دریافت کنید

برای دریافت اطلاعات نمایه کاربر، از ویژگی های یک نمونه از FIRUser استفاده کنید. مثلا:

سریع

let user = Auth.auth().currentUser
if let user = user {
  // 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 getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

هدف-C

FIRUser *user = [FIRAuth auth].currentUser;
if (user) {
  // 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 getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

اطلاعات نمایه ارائه دهنده خاص کاربر را دریافت کنید

برای دریافت اطلاعات نمایه بازیابی شده از ارائه دهندگان ورود به سیستم مرتبط با یک کاربر، از ویژگی providerData استفاده کنید. مثلا:

سریع

let userInfo = Auth.auth().currentUser?.providerData[indexPath.row]
cell?.textLabel?.text = userInfo?.providerID
// Provider-specific UID
cell?.detailTextLabel?.text = userInfo?.uid

هدف-C

id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row];
cell.textLabel.text = [userInfo providerID];
// Provider-specific UID
cell.detailTextLabel.text = [userInfo uid];

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

می‌توانید اطلاعات اولیه نمایه کاربر - نام نمایشی کاربر و URL عکس نمایه - را با کلاس FIRUserProfileChangeRequest کنید. مثلا:

سریع

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { error in
  // ...
}

هدف-C

FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest];
changeRequest.displayName = userInput;
[changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

آدرس ایمیل کاربر را تنظیم کنید

می توانید آدرس ایمیل کاربر را با روش updateEmail:completion: تنظیم کنید. مثلا:

سریع

Auth.auth().currentUser?.updateEmail(to: email) { error in
  // ...
}

هدف-C

[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

یک ایمیل تأیید برای کاربر ارسال کنید

می‌توانید با روش sendEmailVerificationWithCompletion: یک ایمیل تأیید آدرس برای کاربر ارسال کنید. مثلا:

سریع

Auth.auth().currentUser?.sendEmailVerification { error in
  // ...
}

هدف-C

[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

می‌توانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده می‌شود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.

همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل تأیید به برنامه تغییر مسیر دهید.

علاوه بر این، می‌توانید با به‌روزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، ایمیل تأیید را بومی‌سازی کنید. مثلا:

سریع

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

هدف-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

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

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

سریع

Auth.auth().currentUser?.updatePassword(to: password) { error in
  // ...
}

هدف-C

[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

یک ایمیل بازنشانی رمز عبور ارسال کنید

می‌توانید با روش sendPasswordResetWithEmail:completion: ایمیل بازنشانی رمز عبور را برای کاربر ارسال کنید. مثلا:

سریع

Auth.auth().sendPasswordReset(withEmail: email) { error in
  // ...
}

هدف-C

[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

می‌توانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده می‌شود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.

همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل بازنشانی رمز عبور به برنامه هدایت شوید.

علاوه بر این، می‌توانید ایمیل بازنشانی رمز عبور را با به‌روزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، بومی‌سازی کنید. مثلا:

سریع

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

هدف-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

همچنین می‌توانید ایمیل‌های بازنشانی رمز عبور را از کنسول Firebase ارسال کنید.

حذف یک کاربر

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

سریع

let user = Auth.auth().currentUser

user?.delete { error in
  if let error = error {
    // An error happened.
  } else {
    // Account deleted.
  }
}

هدف-C

FIRUser *user = [FIRAuth auth].currentUser;

[user deleteWithCompletion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // Account deleted.
  }
}];

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

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

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

سریع

let user = Auth.auth().currentUser
var credential: AuthCredential

// Prompt the user to re-provide their sign-in credentials

user?.reauthenticate(with: credential) { error in
  if let error = error {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}

هدف-C

FIRUser *user = [FIRAuth auth].currentUser;
FIRAuthCredential *credential;

// Prompt the user to re-provide their sign-in credentials

[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}];

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

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

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