簡體   English   中英

如何將用戶名和電子郵件保存到Firebase

[英]how to save username and email to firebase

我看了一些有關在應用程序中注冊或注冊后將用戶信息保存到數據庫的教程,但是他通過uid保存所有用戶的問題以及我想要的是通過那里的用戶名保存用戶,您認為這是專業人士還是更好的方式做到這一點,或者與應用聊天都沒關系

@IBAction func SignUp(_ sender: Any) {
        if  username.text != nil, email.text != nil, password.text != nil, fullname.text != nil {

            activityIndicator.startAnimating()

            Auth.auth().createUser(withEmail: email.text!, password: password.text!, completion: { (user, error) in
                if error != nil {
                    AlertController.showAlert(self, titel: "Error", message:".Fill all fields\n .User do exists\n .Network error ")
                    self.activityIndicator.stopAnimating()
                    return
                }
                let uid = user?.uid
                let storageRef = Storage.storage().reference(forURL: "gs://,,,,,,,,,.com").child("profile_image").child(uid!)
                if let profileImg = self.selectedImage, let imageData = UIImageJPEGRepresentation(profileImg, 0.1){
                    storageRef.putData( imageData, metadata: nil, completion: { (metadata, error) in
                        if error != nil{
                            return
                        }
                        let profileImageUrl = metadata?.downloadURL()?.absoluteString
                        let ref = Database.database().reference()
                        let usersReferance = ref.child("users")
                        let newUserReferance = usersReferance.child(uid!)
                        newUserReferance.setValue(["fullname": self.fullname.text, "username": self.username.text, "email": self.email.text, "password": self.password.text, "profileImageUrl": profileImageUrl])
                    })
                }
                self.dismiss(animated: true, completion: nil)
                self.activityIndicator.stopAnimating()
            })
}
}
}

這是它在firebase中的顯示方式

如果要通過用戶名保存用戶,可以按照以下步驟操作

@IBAction func SignUp(_ sender: Any) {
        if  username.text != "", email.text != "", password.text != "", fullname.text != "" {

            activityIndicator.startAnimating()

            Auth.auth().createUser(withEmail: email.text!, password: password.text!, completion: { (user, error) in
                if error != nil {
                    AlertController.showAlert(self, titel: "Error", message:".Fill all fields\n .User do exists\n .Network error ")
                    self.activityIndicator.stopAnimating()
                    return
                }
                let uid = user?.uid // here you are providing userID
                let storageRef = Storage.storage().reference(forURL: "gs://.........com").child("profile_image").child(uid!)
                if let profileImg = self.selectedImage, let imageData = UIImageJPEGRepresentation(profileImg, 0.1){
                    storageRef.putData( imageData, metadata: nil, completion: { (metadata, error) in
                        if error != nil{
                            return
                        }
                        let profileImageUrl = metadata?.downloadURL()?.absoluteString
                        let ref = Database.database().reference()
                        let usersReferance = ref.child("users")
//                        let newUserReferance = usersReferance.child(uid!) //here in ref you are creating a node with UID

                        //use your username
                        let newUserReferance = usersReferance.child(username.text!)

                        //set child values here as you doing 
                        newUserReferance.setValue(["fullname": self.fullname.text, "username": self.username.text, "email": self.email.text, "password": self.password.text, "profileImageUrl": profileImageUrl])
                    })
                }
                self.dismiss(animated: true, completion: nil)
                self.activityIndicator.stopAnimating()
            })
        }
    }

對於2。 1)我不認為這是一種bette方法,就像您將節點設置為用戶名,如果在signUp時其他用戶填寫的相同用戶名數據將被新數據替換

2)如果您使用一些檢查來驗證用戶名是否有效,它將起作用,但是出於關注的需要,需要在數據庫中另外提供一個參考,以檢查用戶名是否可用

-在整個數據庫中檢查是否使用了用戶名

-或使用用戶名列表創建一個節點,然后將所有用戶名放入數組中,然后脫機檢查並通過文本字段驗證進行快速響應,甚至可以進行觀察事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM