使用用户名而不是电子邮件登录ios app和firebase

时间:2017-05-22 11:12:03

标签: ios swift firebase firebase-authentication sign

这是我的情况,我使用firebase作为iOS应用程序的数据库。

用户可以通过以下方式通过电子邮件登录:

    @IBAction func signInButtonPressed(_ sender: UIButton)

    {
    if let email = emailField.text, let password = passwordField.text
    {
        FIRAuth.auth()?.signIn(withEmail: email, password: password)
        {
            (user, error) in

            if let error = error
            {
                let alertController = UIAlertController(title: "Login or password incorrect", message:
                    "", preferredStyle: UIAlertControllerStyle.alert)
                alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default,handler: nil))

                self.present(alertController, animated: true, completion: nil)                }
            else
            {
                print("AUTH: EMAIL AUTH SUCCESSFUL")
                User.currentUserId = user?.uid
                User.startTrackingCurrentUser()
                self.performSegue(withIdentifier: "ToFeed", sender: nil)
            }
        }
    }
}

这一切都很完美。

但是,我希望用户使用他们的用户名而不是他们的电子邮件登录。

我在AUth中创建用户,数据也被复制到具有taht结构的数据库中:

--name of db
----posts
----users
------username
------email
------id

这怎么可能呢?

非常感谢你的帮助!

-----编辑-----

添加:`     //开始检查

@IBAction func textFieldEditingDidChange(_ sender: Any) {

    FIRDatabase.database().reference().child("users").child(self.emailField.text!).observeSingleEvent(of: .value, with: { (email) in
        if let userDict = email.value as? [String:AnyObject]{
            for each in userDict{
                let email = each.1 as! String
           }
        }

        if email.exists(){

           print(email)

        }else{

            print("USER NOT EXIST")

        }

    })
}

输入正确的用户名时,我可以在我的控制台中获取快照:

Snap (username written) {
    username = username;
    email = "email@domain.net";
    id = 8mbwfwMW0kZ4ip5mhyvEySxm4iI2;
}

如何获取电子邮件值呢?

我在这一切中苦苦挣扎,任何帮助都会令人惊叹!

谢谢你的帮助和时间!!

0 个答案:

没有答案