נהל משתמשים ב-Firebase

צור משתמש

אתה יוצר משתמש חדש בפרויקט Firebase שלך ​​על ידי קריאה לשיטת createUser או על ידי כניסה למשתמש בפעם הראשונה באמצעות ספק זהות מאוחד, כגון Google Sign-In או Facebook Login .

אתה יכול גם ליצור משתמשים חדשים מאומתים באמצעות סיסמה מקטע האימות של מסוף 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 של תמונת הפרופיל - עם המחלקה UserProfileChangeRequest . לדוגמה:

מָהִיר

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 . לדוגמה:

מָהִיר

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 . לדוגמה:

מָהִיר

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

Objective-C

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

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

אתה יכול לשלוח אימייל לאיפוס סיסמה למשתמש בשיטת sendPasswordReset . לדוגמה:

מָהִיר

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.

מחק משתמש

ניתן למחוק חשבון משתמש בשיטת delete . לדוגמה:

מָהִיר

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 , בדף המשתמשים.

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

חלק מהפעולות הרגישות לאבטחה - כגון מחיקת חשבון , הגדרת כתובת דוא"ל ראשית ושינוי סיסמה - מחייבות שהמשתמש נכנס לאחרונה. אם תבצע אחת מהפעולות הללו, והמשתמש נכנס לפני זמן רב מדי, הפעולה נכשלת עם השגיאה 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 שלך ​​על ידי שימוש בפקודת auth:import של Firebase CLI. לדוגמה:

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