当我想在我的应用程序中删除Firebase用户帐户时,如果该用户最近登录,则该操作正常通过,但是如果我尝试删除该用户一段时间后,出现此错误 “此操作敏感,需要最近的身份验证。重试此请求之前,请再次登录。” 通常,firebase会自动刷新用户会话,但我没有找到他为什么希望用户再次登录,甚至 Auth.auth()。currentUser的值也不为空。谢谢您的帮助 ! 这是我删除用户帐户的代码:
@objc func deleteAccountAction(){
self.showProgressView()
let user = Auth.auth().currentUser
let id=Auth.auth().currentUser?.uid
self.refProducts.child(id!).removeValue { error, _ in
if(error != nil){
print("firebase remove error")
print(error?.localizedDescription.description ?? nil)
self.dismissHUD(isAnimated: true)
}
else{
self.refUsers.child(id!).removeValue { error, _ in
if(error != nil){
print("firebase remove error")
print("error while deleting user from firebase: "+error!.localizedDescription)
self.dismissHUD(isAnimated: true)
}
else {
user?.delete { error in
if error != nil {
print("error while deleting user:" + error!.localizedDescription)
self.dismissHUD(isAnimated: true)
} else {
UserDefaults.standard.removeObject(forKey: "USER_UID")
UserDefaults.standard.synchronize
self.dismissHUD(isAnimated: true)
let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "StartingViewController") as! StartingViewController
nextVC.isAccoundDeleted=true
GlobalVar.user=nil
self.navigationController?.pushViewController(nextVC, animated: true)
}
}
}
}
}
}
}
答案 0 :(得分:2)
对于某些敏感操作(例如,更改用户密码或删除用户帐户),Firebase要求用户最近登录。如果您在尝试执行此操作时最近未登录, Firebase会引发异常。
出现此异常时,应要求用户重新输入其凭据,然后重试该操作。
来自documentation on handling errors:
[删除用户帐户]是一项安全敏感的操作,需要用户最近登录。此错误表示用户最近没有登录过。要解决此问题,请在
reauthenticateWithCredential:completion:
上调用FIRUser
对用户进行重新认证。