Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

צור משתמש

אתה יוצר משתמש חדש בפרויקט Firebase שלך ​​על ידי קריאה ל- createUserWithEmail:password:completion: שיטה או על ידי כניסה למשתמש בפעם הראשונה באמצעות ספק זהות מאוחד, כגון כניסה של Google או כניסה לפייסבוק .

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

השג את המשתמש המחובר כעת

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

מָהִיר

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

מטרה-ג

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

באמצעות מאזין, אתה מוודא שהאובייקט Auth אינו נמצא במצב ביניים - כגון אתחול - כאשר אתה מקבל את המשתמש הנוכחי.

תוכל גם להשיג את המשתמש currentUser באמצעות המאפיין 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];

עדכן את פרופיל המשתמש

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

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

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