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

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

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

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

احصل على المستخدم المسجل حاليًا

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

سويفت

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().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 ، على الصفحة المستخدمين.

إعادة مصادقة المستخدم

بعض إجراءات مثل الحساسة أمنيا كما حذف حساب ، وضع عنوان البريد الإلكتروني الرئيسي ، و تغيير كلمة المرور -require أن المستخدم قد وقعت مؤخرا في. إذا قمت بإجراء واحد من هذه الإجراءات، والمستعمل وقعت في وقتا طويلا قبل أن فشل عمل مع 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 باستخدام Firebase CLI في auth:import الأوامر. على سبيل المثال:

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