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 שלך על ידי קריאת createUserWithEmail:password:completion: שיטה או באמצעות כניסה למשתמש בפעם הראשונה באמצעות ספקית זהויות מאוחדת, כגון הכניסה של Google או פייסבוק כניסה .

ניתן גם ליצור משתמשים חדשים-מאומת הסיסמה ממדור אימות של קונסולת Firebase , בעמוד המשתמשים.

קבל את המשתמש המחובר כעת

הדרך המומלצת להשיג את המשתמש הנוכחי היא על ידי הגדרת מאזין לאובייקט Auth:

מָהִיר

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

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

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

Objective-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

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

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

Objective-C

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

שלח למשתמש הודעת אימות

אתה יכול לשלוח מייל אימות כתובת למשתמש עם sendEmailVerificationWithCompletion: שיטה. לדוגמה:

מָהִיר

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

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

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

Objective-C

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

שלח מייל לאיפוס סיסמה

אתה יכול לשלוח דוא"ל איפוס סיסמה למשתמש עם sendPasswordResetWithEmail:completion: השיטה. לדוגמה:

מָהִיר

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

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

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

Objective-C

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

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

ייבא חשבונות משתמשים

ניתן לייבא חשבונות משתמשים מקובץ לתוך הפרויקט Firebase שלך על ידי שימוש של Firebase CLI auth:import הפקודה. לדוגמה:

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