Swift - Firebase - Удалить учетную запись пользователя (Auth) - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь удалить учетную запись пользователя, уже вошедшего в систему / авторизации с Twitter -> удалить его из Firebase Auth.

Этот код выполняется, когда он нажимает кнопку. Мне удалось снова войти в систему и поймать имя пользователя / идентификатор пользователя из Twitter, но я все еще получаю это сообщение:

ошибка: Ошибка Domain = FIRAuthErrorDomain Code = 17014 «Эта операция чувствительна и требует недавней аутентификации. Войдите еще раз, прежде чем повторить этот запрос». UserInfo = {NSLocalizedDescription = Эта операция является конфиденциальной и требует недавней аутентификации. Войдите еще раз, прежде чем повторять этот запрос., Error_name = ERROR_REQUIRES_RECENT_LOGIN} Необязательно («Эта операция является чувствительной и требует недавней аутентификации. Войдите в систему еще раз, прежде чем повторять этот запрос.»)

TWTRTwitter.sharedInstance().logIn(completion: { (session, error) in
    if (session != nil) {
        print("signed in as \(session?.userName)");
        print("signed in as \(session?.userID)");
        let user = Auth.auth().currentUser
        user?.delete { error in
            if let error = error {
                // An error happened.
                print("error: \(error)")
            } else {
                print("deleted")
            }
        }
        Auth.auth().currentUser?.delete(completion: { (err) in                    
            print(err?.localizedDescription)                    
        })
    } else {
        print ("session is nil")
    }        
})

Как можно удалить учетную запись Auth от пользователя из кода? (не с облачными функциями)?

спасибо,

1 Ответ

0 голосов
/ 10 июня 2019

Я не знаю причин, по которым пользователь теряется при прямой консультации с Auth.auth (). Текущий пользователь? Тем не менее, правильное решение - использовать переменную сеанса, полученную в результате завершения. В этом примере я аутентифицируюсь по номеру телефона, но он соответствует тому же.

    let credential = PhoneAuthProvider.provider().credential(
    withVerificationID: "some string",
        verificationCode: "some string")

Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in                        
    if error != nil {
        //do something
        }
        authResult?.user.delete(completion: { _ in
            //do something...
    })
}

В вашем коде вы должны вызвать метод delete из переменной сеанса.

...