Как создать пользователя
Создать пользователя можно следующими способами:
Из приложения. Создайте нового пользователя в проекте Firebase, вызвав метод
createUserили выполнив первый вход пользователя с помощью федеративного поставщика идентификационной информации, например Google или Facebook.В консоли Firebase создайте нового пользователя с аутентификацией по паролю на вкладке Безопасность > Аутентификация > Пользователи.
Как получить информацию о пользователе, выполнившем вход
Рекомендуемый способ получить текущего пользователя – задать прослушиватель для объекта Auth:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in // ... }
Objective-C
self.handle = [[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) { // ... }];
Используя прослушиватель, вы гарантируете, что объект Auth не находится в промежуточном состоянии, например инициализации, когда вы получаете текущего пользователя.
Текущего пользователя также можно получить с помощью свойства currentUser. Если пользователь не вошел в аккаунт, значение currentUser будет равно нулю:
Swift
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. Пример:
Swift
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. Пример:
Swift
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. Пример:
Swift
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.
Пример:
Swift
Auth.auth().currentUser?.updateEmail(to: email) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
Как отправить пользователю письмо с подтверждением
Вы можете отправить пользователю письмо с подтверждением адреса, используя метод sendEmailVerificationWithCompletion:. Пример:
Swift
Auth.auth().currentUser?.sendEmailVerification { error in // ... }
Objective-C
[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) { // ... }];
Вы можете выбрать, какой шаблон будет использоваться, на вкладке Шаблоны в разделе Безопасность > Аутентификация консоли Firebase. Подробнее о шаблонах электронных писем в Справочном центре Firebase…
Также можно передать состояние через URL продолжения, чтобы перенаправить пользователя обратно в приложение после отправки письма с подтверждением.
Кроме того, вы можете локализовать письмо с подтверждением, обновив код языка в экземпляре Auth перед отправкой письма. Пример:
Swift
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. Пример:
Swift
Auth.auth().currentUser?.updatePassword(to: password) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) { // ... }];
Как отправить письмо для сброса пароля
Вы можете отправить пользователю письмо с инструкциями по сбросу пароля, используя метод sendPasswordReset. Пример:
Swift
Auth.auth().sendPasswordReset(withEmail: email) { error in // ... }
Objective-C
[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
Вы можете настроить шаблон электронного письма, который используется в разделе "Аутентификация" консоли Firebase, на странице "Шаблоны электронных писем". Подробнее о шаблонах электронных писем рассказывается в Справочном центре Firebase.
Также можно передать состояние через URL продолжения, чтобы перенаправить пользователя обратно в приложение при отправке электронного письма для сброса пароля.
Кроме того, вы можете локализовать письмо для сброса пароля, обновив код языка в экземпляре Auth перед отправкой письма. Пример:
Swift
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. Пример:
Swift
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. Пример:
Swift
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