נהל משתמשים ב- 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 הוא אפסי:

מָהִיר

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