快速问题,我正在尝试为用户提供使用Xcode上的swift从firebase删除其帐户的选项。
我目前有一个“删除”按钮,该按钮会导致UIAlert询问用户是否确定要删除自己的帐户(以防万一)
下面是我执行此操作的代码
//Handles delete current user account (not fnished yet)
@IBAction func deleteAccount(_ sender: Any) {
createAlert2(title: "Delete Account", message: "Are you sure you want to delete your account? This will permanently erase your account.")
}
此功能
func createAlert2 (title:String, message:String){
let alert2 = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
alert2.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: { (action) in
alert2.dismiss(animated: true, completion: nil)
}))
alert2.addAction(UIAlertAction(title: "Delete", style: UIAlertActionStyle.destructive, handler: { (action) in
let user = Auth.auth().currentUser
user?.delete { error in
if error != nil {
// An error happened.
} else {
// Account deleted.
print("user deleted")
}
}
let controller2 = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController
self.present(controller2, animated: true, completion: nil)
}))
self.present(alert2, animated: true, completion: nil)
我的目标是删除用户并将其发送回该MenuViewController。但是似乎要做的就是将用户转到该菜单视图,而不是实际上删除他们在firebase上的帐户。感谢您的帮助,我一直喜欢并选中答案。谢谢:)
答案 0 :(得分:0)
如果您打印错误或仅在用户之后添加几个断点?删除,您很可能会看到类似这样的内容:
可选 -某些:错误Domain = FIRAuthErrorDomain代码= 17014“此操作敏感,需要最近的身份验证。在重试此请求之前,请再次登录。” UserInfo = {NSLocalizedDescription =此操作敏感,需要最近的身份验证。重试此请求之前,请再次登录。,error_name = ERROR_REQUIRES_RECENT_LOGIN}
这意味着您需要使用凭据(电子邮件,密码)进行注册或重新进行身份验证,才能删除您的用户。您可以在下面进行一些改进的用户代码(选择获取凭证的方式)
//最新的Firebase +迅捷4
std::string
很遗憾,此问题文档非常差(尤其是最新版本)。希望您发现我的回答有用。 注意***:让用户能够直接删除其个人资料是一个非常糟糕的主意(IMHO),如果您发送电子邮件通知并禁用用户并使他的令牌或UID无效,则更好,这将为您将来提供更大的灵活性。