mar*_*ark 5 firebase swift firebase-authentication
当我想在我的应用程序中删除一个 firebase 用户帐户时,如果用户最近登录,操作会正常通过,但一段时间后,如果我尝试删除用户,我会收到此错误“此操作是敏感的,需要最近的身份验证。在重试此请求之前再次登录。” 通常,firebase 会自动刷新用户会话,但我没有找到为什么他希望用户再次登录,甚至Auth.auth().currentUser 的值也不是 nil。感谢您的帮助 !这是我删除用户帐户的代码:
@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)
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了弗兰克·范的回答,时间跨度是5 分钟。登录5分钟后,您将无法进行此类操作。
您可以参考FIRAuthErrorCode(查看错误代码17014:FIRAuthErrorCodeRequiresRecentLogin = 17014)
对于某些敏感操作(例如更改用户密码或删除用户帐户),Firebase 要求用户最近登录。如果您尝试执行此类操作时用户最近未登录,Firebase 会抛出你得到的例外。
当您收到此异常时,您应该要求用户重新输入他们的凭据,然后重试该操作。
[删除用户帐户]是一项安全敏感操作,需要用户最近登录。此错误表示用户最近登录时间不够。要解决此问题,请通过调用
reauthenticateWithCredential:completion:on重新验证用户FIRUser。
| 归档时间: |
|
| 查看次数: |
5797 次 |
| 最近记录: |