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

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)

Dee*_*dhi 8

除了弗兰克·范的回答,时间跨度是5 分钟。登录5分钟后,您将无法进行此类操作。

您可以参考FIRAuthErrorCode(查看错误代码17014:FIRAuthErrorCodeRequiresRecentLogin = 17014)

  • @Finni,https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Enums/FIRAuthErrorCode#:~:text=password%20more%20than-,5%20minutes,-after%20signing% 20in - 检查代码17014的描述 (2认同)

Fra*_*len 6

对于某些敏感操作(例如更改用户密码或删除用户帐户),Firebase 要求用户最近登录。如果您尝试执行此类操作时用户最近未登录,Firebase 会抛出你得到的例外。

当您收到此异常时,您应该要求用户重新输入他们的凭据,然后重试该操作。

处理错误文档中

[删除用户帐户]是一项安全敏感操作,需要用户最近登录。此错误表示用户最近登录时间不够。要解决此问题,请通过调用reauthenticateWithCredential:completion:on重新验证用户FIRUser

  • 您知道“最近登录”中的“最近”是多久吗?秒、分钟、小时?我需要这个来进行调试。 (8认同)
  • 您好,当我将电话身份验证链接到电子邮件身份验证时,我遇到了同样的情况。如何重新验证电话用户的身份? (3认同)