Swift-Firebase-删除用户帐户(Auth)

时间:2019-01-04 14:14:48

标签: swift firebase firebase-authentication twitter-oauth

我正在尝试删除已使用Twitter登录/验证的用户帐户 ->从Firebase身份验证中删除它。

当他按下按钮时,将执行此代码。我设法再次登录并从Twitter捕获了用户名/用户ID,但仍然收到此消息:

  

错误:错误域= FIRAuthErrorDomain代码= 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 :(得分:0)

我不知道直接咨询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方法。