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 для входа в системе или Facebook Войти .

Вы также можете создать новый пароль , прошедших проверку подлинности пользователей в разделе Проверка подлинности Firebase консоли , на странице Users.

Получить текущего пользователя, вошедшего в систему

Рекомендуемый способ получить текущего пользователя - установить прослушиватель для объекта Auth:

Быстрый

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

Цель-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.
  // ...
}

Цель-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 += " "
  }
  // ...
}

Цель-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

Цель-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
  // ...
}

Цель-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
  // ...
}

Цель-C

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

Отправить пользователю письмо с подтверждением

Вы можете отправить адрес проверочное письмо пользователю с sendEmailVerificationWithCompletion: метод. Например:

Быстрый

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

Цель-C

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

Вы можете настроить шаблон электронной почты , который используется в разделе Проверка подлинности Firebase консоли , на странице Шаблоны электронной почты. См Email шаблоны в Firebase справочном центре.

Также можно пройти через состояние продолжить URL для перенаправления обратно в приложение при отправке подтверждения по электронной почте.

Кроме того, вы можете локализовать письмо с подтверждением, обновив код языка в экземпляре Auth перед отправкой электронного письма. Например:

Быстрый

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

Цель-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
  // ...
}

Цель-C

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

Отправить электронное письмо для сброса пароля

Вы можете отправить по электронной почте для сброса пароля для пользователя с sendPasswordResetWithEmail:completion: метод. Например:

Быстрый

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

Цель-C

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

Вы можете настроить шаблон электронной почты , который используется в разделе Проверка подлинности Firebase консоли , на странице Шаблоны электронной почты. См Email шаблоны в Firebase справочном центре.

Также можно пройти через состояние продолжить URL для перенаправления обратно в приложение при отправке по электронной почте для сброса пароля.

Кроме того, вы можете локализовать электронное письмо для сброса пароля, обновив код языка в экземпляре Auth перед отправкой электронного письма. Например:

Быстрый

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

Цель-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.
  }
}

Цель-C

FIRUser *user = [FIRAuth auth].currentUser;

[user deleteWithCompletion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // Account deleted.
  }
}];

Вы можете также удалять пользователей из раздела Проверка подлинности Firebase консоли , на странице Users.

Повторно аутентифицировать пользователя

Некоторые безопасности чувствительных действия, такие как удаление учетной записи , установив основной адрес электронной почты , и изменение пароля -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.
  }
}

Цель-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