登录非常有效。
登出后,一切似乎都正常,但是,当我以其他用户身份登录/注册时,数据没有更新。
有趣的是,登录/注册数据正在与我的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")