斯威夫特 3
我昨天在尝试删除用户时不得不这样做。需要注意的一件事是 FIRAuthErrorCodeCredentialTooOld 现在是 FIRAuthErrorCode.errorCodeRequiresRecentLogin
我所做的是触发UIView 以在引发该错误时询问登录详细信息。由于我使用的是电子邮件和密码,这就是我在示例中从用户那里收集的信息。
private func deleteUser() {
//get the current user
guard let currentUser = FIRAuth.auth()?.currentUser else { return }
currentUser.delete { (error) in
if error == nil {
//currentUser is deleted
} else {
//this gets the error code
guard let errorCode = FIRAuthErrorCode(rawValue: error!._code) else { return }
if errorCode == FIRAuthErrorCode.errorCodeRequiresRecentLogin {
//create UIView to get user login information
let loginView = [yourLoginUIViewController]
self.present(loginView, animated: true, completion: nil)
}
}
}
获得登录信息后,我运行此函数来重新验证用户。就我而言,如果登录成功,我在上面的代码中运行loginView:
func reauthenticateUserWith(email: String, password: String) {
FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
if error == nil {
//display UIView to delete user again
let deleteUserView = deleteUserView()
present(deleteUserView, animated: true, completion: nil)
} else {
//handle error
print(error!.localizedDescription)
}
}
}
在我的例子中,deleteUserView 在用户点击按钮时调用deleteUser()。您也可以使用 UIAlertController 代替自定义 UIViews,但这取决于您。
希望这会有所帮助。