删除用户帐户时,firebase错误“此操作敏感,需要最近的身份验证。重试此请求之前,请再次登录。”

时间:2019-06-16 09:13:02

标签: swift firebase firebase-authentication

当我想在我的应用程序中删除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)
                        }
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

对于某些敏感操作(例如,更改用户密码或删除用户帐户),Firebase要求用户最近登录。如果您在尝试执行此操作时最近未登录, Firebase会引发异常。

出现此异常时,应要求用户重新输入其凭据,然后重试该操作。

来自documentation on handling errors

  

[删除用户帐户]是一项安全敏感的操作,需要用户最近登录。此错误表示用户最近没有登录过。要解决此问题,请在reauthenticateWithCredential:completion:上调用FIRUser对用户进行重新认证。