Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

يمكنك أيضًا إنشاء مستخدمين جدد مصادق عليهم بكلمة مرور من قسم المصادقة في وحدة تحكم 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: method. فمثلا:

سويفت

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