تلتزم Google بتعزيز المساواة العرقية للمجتمعات السوداء. أنظر كيف.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

إدارة المستخدمين في Firebase

قم بإنشاء مستخدم

يمكنك إنشاء مستخدم جديد في مشروع createUserWithEmail:password:completion: الخاص بك عن طريق الاتصال بـ createUserWithEmail:password:completion: الطريقة أو عن طريق تسجيل دخول مستخدم لأول مرة باستخدام موفر هوية متحد ، مثل تسجيل الدخول باستخدام Google أو تسجيل الدخول إلى Facebook .

يمكنك أيضًا إنشاء مستخدمين جدد مصادق عليهم بكلمة مرور من قسم المصادقة في وحدة تحكم Firebase ، في صفحة المستخدمين.

احصل على المستخدم الذي قام بتسجيل الدخول حاليًا

الطريقة الموصى بها للحصول على المستخدم الحالي هي تعيين مستمع على كائن المصادقة:

سويفت

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

ج موضوعية

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

باستخدام مستمع ، تأكد من أن كائن المصادقة ليس في حالة وسيطة - مثل التهيئة - عندما تحصل على المستخدم الحالي.

يمكنك أيضًا الحصول على المستخدم الذي قام بتسجيل الدخول حاليًا باستخدام خاصية currentUser . إذا لم يقم المستخدم بتسجيل الدخول ، فإن currentUser هو صفر:

سويفت

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

ج موضوعية

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 += " "
  }
  // ...
}

ج موضوعية

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

ج موضوعية

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
  // ...
}

ج موضوعية

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

حدد عنوان البريد الإلكتروني للمستخدم

يمكنك تعيين عنوان البريد الإلكتروني للمستخدم باستخدام updateEmail:completion: الطريقة. فمثلا:

سويفت

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

ج موضوعية

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

أرسل رسالة بريد إلكتروني للتحقق إلى المستخدم

يمكنك إرسال بريد إلكتروني للتحقق من العنوان إلى مستخدم باستخدام طريقة sendEmailVerificationWithCompletion: فمثلا:

سويفت

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

ج موضوعية

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

يمكنك تخصيص قالب البريد الإلكتروني المستخدم في قسم المصادقة بوحدة تحكم Firebase ، في صفحة قوالب البريد الإلكتروني. اطلع على قوالب البريد الإلكتروني في مركز مساعدة Firebase.

من الممكن أيضًا تمرير الحالة عبر عنوان URL للمتابعة لإعادة التوجيه إلى التطبيق عند إرسال رسالة تحقق.

بالإضافة إلى ذلك ، يمكنك ترجمة رسالة التحقق عن طريق تحديث رمز اللغة في مثيل المصادقة قبل إرسال البريد الإلكتروني. فمثلا:

سويفت

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

ج موضوعية

[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
  // ...
}

ج موضوعية

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

إرسال بريد إلكتروني لإعادة تعيين كلمة المرور

يمكنك إرسال بريد إلكتروني لإعادة تعيين كلمة المرور إلى مستخدم باستخدام sendPasswordResetWithEmail:completion: الطريقة. فمثلا:

سويفت

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

ج موضوعية

[[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()

ج موضوعية

[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.
  }
}
 

ج موضوعية

 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.
  }
}
 

ج موضوعية

 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.
  }
}];
 

استيراد حسابات المستخدمين

يمكنك استيراد حسابات المستخدمين من ملف إلى مشروع Firebase باستخدام الأمر auth:import في Firebase CLI. فمثلا:

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