Я пробую функцию сброса пароля Firebase. Я использую метод аутентификации по электронной почте/паролю + ссылку для подтверждения электронной почты. Я создал учетные записи, подтвердил их электронную почту по ссылке для подтверждения. Таким образом, функции создания пользователя, проверки электронной почты, входа и выхода работали должным образом.
Вот мои настройки аутентификации в Firebase:

Когда я создаю пользователя, это работает:

После создания пользователя я отправляю электронное письмо с подтверждением, и проверенные пользователи могут войти в систему. Это тоже работает. Вот моя функция для входа в систему (firebaseAuth = Auth.auth()):
func loginUserWith(модель: LoginFormModel, KeepSession: Bool, завершение: @escaping(_ успех: Bool, _ проверено: Bool, _ ошибка: Ошибка?)->()){ firebaseAuth.signIn(withEmail: model.email, пароль: model.password) { [self] authResult, ошибка в ошибка охранника == ноль else { print(ошибка?.localizedDescription ?? «Ошибка») завершение (ложь, правда, ошибка) возвращаться } охранник пусть authResult = authResult else { завершение(ложь,ложь,ошибка) возвращаться } пусть userId = authResult.user.uid Guard firebaseAuth.currentUser?.isEmailVerified == true else { завершение (истина, ложь, ошибка) возвращаться } //Некоторый код, который работает после успешного входа в систему } } Выход также работает, поэтому я не добавляю его сюда.
Прежде чем мое приложение отправит ссылку для сброса пароля, оно выводит пользователя из системы, если он уже вошел в систему. Затем отправляет электронное письмо для сброса пароля с помощью этой функции:
func resetPasswordWith(email: String, завершение: @escaping(_ error: Error?) -> Void) { firebaseAuth.sendPasswordReset(withEmail: email) {ошибка в ошибка охранника == ноль else { print(ошибка?.localizedDescription ?? «Ссылка для сброса пароля не удалась») завершение (ошибка) возвращаться } завершение (ноль) } } Затем ссылка приходит на электронную почту, открывается в моем браузере нормально:

Открывается ссылка, запрашиваю новый пароль и когда я там написал новый пароль, он сохраняет пароль, говорит, что теперь я могу войти под своим новым паролем:

Но когда я использую этот новый пароль в своем приложении для входа в систему, Firebase сообщает мне: «Пароль недействителен или у пользователя нет пароля». ошибка:

Эта ошибка возникает из-за ошибки?.localizedDescription Firebase.
Кто-нибудь знает, что мне нужно делать?
[*]Я пробовал сбросить пароль в разных браузерах. [*]Я не отправляю несколько сбросов паролей и не нажимаю предыдущий вместо последнего, я обязательно нажимаю правильный. [*]Я попробовал сбросить пароль после создания пользователя, отправки ссылки для подтверждения электронной почты, подтверждения электронной почты и успешного первого входа в систему. [*]Иногда открывается новая ссылка для сброса и появляется сообщение: «Срок действия вашего запроса на подтверждение электронной почты истек или ссылка уже использовалась». Затем я возвращаюсь и снова открываю ту же ссылку, и она показывает правильный экран ввода/сохранения нового пароля, сохраняет и говорит, что теперь я могу войти в систему, используя свой новый пароль. Но новый пароль никогда не работает. Старый пароль тоже не работает.
Мобильная версия