#swift #firebase #firebase-authentication
#swift #firebase #firebase-аутентификация
Вопрос:
Я хотел бы знать, автоматически ли удаление учетной записи из Firebase выводит пользователя из системы?
Я имею в виду, если я хочу показать ему после удаления экрана входа, то мне просто нужно представить этот VC?
Я спрашиваю об этом, потому что, если я сделаю это подобным образом, произойдет сбой, и я думаю, это потому, что пользователь больше не существует на данный момент.
Я прав?
Код с некоторыми пояснениями :
let user = FIRAuth.auth()?.currentUser
user?.deleteWithCompletion { error in
if let error = error {
// An error happened.
} else {
try! FIRAuth.auth()!.signOut()//This is unnecessary?
let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil)
let WelcomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "WelcomeViewController")
//Send the user to the WelcomeViewController
self.present(WelcomeViewController, animated: true, completion: nil)
// Account deleted.
}
}
Ответ №1:
Если вы удаляете своего текущего пользователя, вам нужно позаботиться о двух вещах:-
- Удалите данные пользователя из базы данных Firebase (если таковые имеются)
-
Удалите учетные данные для авторизации (например:- email-пароль, facebook-логин, Twitter и т.д.)
Чтобы удалить текущего пользователя, используйте приведенную ниже функцию, которая также сначала выводит пользователя из системы
FIRAuth.auth()?.currentUser?.delete(completion: { (err) in print(err?.localizedDescription) })
Если вы CMD НАЖМЕТЕ на функцию удаления, вы перейдете к ее документации :-
Удаляет учетную запись пользователя (также выводит пользователя, если это был текущий пользователь).
завершение необязательно; блок, вызываемый при завершении запроса на удаление учетной записи или при сбое. В будущем вызывается асинхронно в основном потоке.
Возможные коды ошибок: — @c FIRAuthErrorCodeRequiresRecentLogin — Обновление электронной почты является чувствительной к безопасности операцией, которая требует недавнего входа пользователя в систему. Эта ошибка указывает на то, что пользователь недостаточно недавно вошел в систему. Для устранения проблемы повторите проверку подлинности пользователя, вызвав reauthenticateWithCredential:завершение: для FIRUser.
Список кодов ошибок, общих для всех операций FIRUser, см. в разделе @c FIRAuthErrors. */
Короче говоря, если полученная ошибка равна нулю, учетная запись вашего текущего пользователя не только была удалена, но и автоматически вышла из системы, но вам нужно будет обработать другие FIRAuthErrors, как указано в документации
Комментарии:
1. Тогда да, вы уже автоматически вывели своего пользователя из системы.
2. Но почему я получаю сбой после указания пользователю на просмотр приветствия?
3. Где именно вы получаете ошибку? В этом классе или
WelcomeViewController
И в какой строке?4. Если вы получаете доступ к информации текущего пользователя в этом классе, то, возможно, да…
5. Это ваш код welcomeViewController, который вы только что обновили? Попробуйте изменить на
let user = FIRAuth.auth()?.currentUser
наif let user = FIRAuth.auth()?.currentUser {..}