Я использую Firebase Auth для моего приложения Swift iOS. Google рекомендует использовать Firebase Auth UI в качестве системы аутентификации «drop in», но он обрабатывает только начальный логин. Теперь я работаю над тем, чтобы разрешить пользователю делать изменения профиля, такие как электронная почта и пароль.Как работает Firebase Aut U UU с повторной аутентификацией?
документация для внесения этих изменений упоминается в нескольких местах, что некоторые изменения требуют, чтобы пользователь вошли в последнее время (см https://firebase.google.com/docs/auth/ios/manage-users#get_the_currently_signed-in_user):
Некоторые действия, такие безопасности чувствительных к удалению учетной записи, установив первичный адрес электронной почты и изменение пароля - требуется, чтобы пользователь недавно выполнил вход. Если вы выполните одно из этих действий, а пользователь уже давно зашел, действие завершится неудачно с ошибкой FIRAuthErrorCodeCredentialTooOld.
Прежде всего, не существует ошибки FIRAuthErrorCodeCredentialTooOld
в любом месте API.
Во-вторых, документация предполагает использование reauthenticate(with:)
, чтобы решить эту проблему, с этим кодом образца:
let user = FIRAuth.auth()?.currentUser
var credential: FIRAuthCredential
// 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.
}
}
Проблема заключается в том, что я использовал Firebase Auth UI, у меня нет пользовательского интерфейса для получения учетных данных пользователя.
Мое текущее мышление заключается в том, что я могу повторно аутентифицировать, представив тот же пользовательский интерфейс Firebase Auth, который используется для входа в систему при возникновении этой ошибки. Однако я не знаю, является ли это санкционированным способом для этого, или если он вообще будет работать, или если он будет продолжать работать в будущем. Я проверил базу кода Firebase Auth UI, и в любом месте нет ответа на reauthenticate()
. Документация делает большой вызов вызова этого метода специально в случае этой ошибки, поэтому я запутался.
Если мне нужно создать полный пользовательский интерфейс для выполнения повторной аутентификации, в том числе нескольких поставщиков, то в чем смысл использования Firebase Auth UI?
Конечно, но что, если пользователь вошел в систему с поставщиком, например, Facebook или Google? Нет никаких указаний на то, что эта ошибка возникает только при использовании электронной почты. –
В этом случае вам сначала нужно запросить у пользователя метод входа. Вам, вероятно, понадобится правильный контроллер представления для этого не только контроллера предупреждений – ThunderStruct
Спасибо, это в значительной степени то, что я ожидал.Итак, мой первоначальный вопрос остается: могу ли я просто использовать Firebase Auth UI снова для этой повторной аутентификации? Он не требует повторной проверки подлинности в любом месте. Но если это нормально, просто войдите снова, это тоже должно работать? Некоторые разъяснения от команды Firebase помогут. –