Firebase ошибка при удалении учетной записи пользователя «Эта операция чувствительна и требует недавней аутентификации. Войдите еще раз, прежде чем повторить этот запрос». - PullRequest
0 голосов
/ 16 июня 2019

Когда я хочу удалить учетную запись пользователя 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)
                        }
                    }
                }
            }
        }
    }
}

1 Ответ

2 голосов
/ 16 июня 2019

Для определенных конфиденциальных операций (таких как изменение пароля пользователя или удаление учетной записи пользователя) Firebase требует, чтобы пользователь недавно выполнил вход. Если пользователь не выполнил вход недавно, когда вы пытаетесь выполнить такую ​​операцию, Firebase генерирует исключение, которое вы получаете.

Когда вы получите это исключение, вы должны попросить пользователя повторно ввести свои учетные данные и повторить операцию.

Из документации по обработке ошибок :

[Удаление учетной записи пользователя] - это чувствительная к безопасности операция, которая требует недавнего входа пользователя в систему. Эта ошибка означает, что пользователь не вошел в систему в последнее время. Чтобы решить эту проблему, повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser.

...