【发布时间】:2017-06-02 09:58:15
【问题描述】:
我正在为我的 Swift iOS 应用程序使用 Firebase 身份验证。 Google 建议使用 Firebase Auth UI 作为“插入式”身份验证系统,但它只处理初始登录。我现在正致力于允许用户更改个人资料,例如电子邮件和密码。
进行这些更改的文档在多个地方提到某些更改需要用户最近登录(请参阅https://firebase.google.com/docs/auth/ios/manage-users#get_the_currently_signed-in_user):
某些安全敏感操作(例如删除帐户、设置主电子邮件地址和更改密码)要求用户最近登录。如果您执行这些操作之一,而用户登录时间过长之前,操作失败并出现 FIRAuthErrorCodeCredentialTooOld 错误。
首先,API 中的任何地方似乎都没有出现FIRAuthErrorCodeCredentialTooOld 错误。
其次,文档建议使用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,所以我没有用于获取用户凭据的自定义 UI。
我目前的想法是,我可以通过在发生此错误时显示用于登录的相同 Firebase 身份验证 UI 来重新进行身份验证。但是,我不知道这是否是认可的方式,或者它是否会起作用,或者它是否会在未来继续起作用。我检查了 Firebase Auth UI 代码库,并没有在任何地方调用 reauthenticate()。文档在此错误的情况下专门调用此方法,所以我很困惑。
如果我需要构建整个 UI 来执行重新身份验证,包括多个提供程序,那么使用 Firebase Auth UI 有什么意义?
【问题讨论】:
-
这个问题是 2 年前提出的。我们是否已经在 2019 年为此制定了有效的解决方案?
标签: ios swift firebase firebase-authentication firebaseui