Firebase身份验证:除非进行硬重置,否则uid不注销

时间:2018-07-29 19:52:53

标签: swift xcode firebase firebase-authentication

登录非常有效。

登出后,一切似乎都正常,但是,当我以其他用户身份登录/注册时,数据没有更新。

有趣的是,登录/注册数据正在与我的Firebase数据库通信。

以下是视频说明:

第一个视频显示我试图注册为“ Rob”用户,但在注册按钮上单击我的应用程序,以“ Cameron”用户登录

https://drive.google.com/file/d/1QMz-V0cwmb-XgP79PgSe2h08cnAqqiHL/view?usp=sharing

第二个视频显示了我从Xcode重新启动我的应用程序,并且出现主屏幕时,我以“ Rob”用户身份登录

https://drive.google.com/file/d/1FGJFGaXOCJaFKbSuzfl162P5bAntpqjh/view?usp=sharing

我再次声明,当我注册新用户时,信息将进入我的数据库

这是我的代码:

LoginViewController 我不确定创建用户后是否需要登录用户。 (请参阅*)

 //MARK: LOCAL VARS

var ref: DatabaseReference!


//MARK: OVERRIDE FUNCS

override func viewDidLoad() {

    super.viewDidLoad()        

    ref = Database.database().reference()

    Auth.auth().addStateDidChangeListener() { auth, user in

        if user != nil {

            self.performSegue(withIdentifier: "LogIn", sender: nil)
        }
    }
}


//MARK: HELPER FUNCS

func signIn() {

    Auth.auth().signIn(withEmail: emailField.text!, password: passwordField.text!, completion: { (user,error) in

        if error == nil {

            self.performSegue(withIdentifier: "LogIn", sender: nil)
        }
    })
}  

//MARK: OUTLET ACTIONS

@IBAction func loginBtnAction(_ sender: Any) {

    if (loginBtn.currentTitle == "Login") {

       signIn()

    } else {

        Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, err) in               

            if err == nil

            {

                let userRef = self.ref.child("users").child((user?.uid)!)

                let values = ["name": self.nameField.text, "email": self.emailField.text]

                userRef.setValue(values)
                *//self.signIn()
            }

        })
    }
}

ViewController

这是我从Firebase提取名称的地方。 我在viewdidload和viewwill中会出现相同的代码,因为我不确定它应该插入哪一个。

 //MARK: OUTLETS
@IBOutlet weak var nameLabel: UILabel!


//MARK: OVERRIDE FUNCTIONS
override func viewDidLoad() {
    super.viewDidLoad()

    //retrieve name from DB
    FB.fire.nameRef.observeSingleEvent(of: .value, with: { snapshot in
        if let name = snapshot.value as? String {
            self.nameLabel.text = name
        }
    })
}

override func viewDidAppear(_ animated: Bool) {

    //retrieve name from DB
    FB.fire.nameRef.observeSingleEvent(of: .value, with: { snapshot in
        if let name = snapshot.value as? String {
            self.nameLabel.text = name
        }
    })
}

这在另一个文件中,但这是我的名字参考

 FB.fire.nameref = 
 Database.database().reference().child("users").child((Auth.auth().currentUser?.uid)!).child("name") 

0 个答案:

没有答案