【问题标题】:How do you update a users profile settings using firebase and swift?如何使用 firebase 和 swift 更新用户配置文件设置?
【发布时间】:2016-09-08 20:22:22
【问题描述】:

我正在尝试更新用户的电子邮件和全名。这是我的代码:

func saveTapped() {

    var performSegue = false

    if updateEmail.text == "" && updateFullName.text == "" {
        self.cleanUrCodeRohan("Please fill in one or more of the missing text fields that you would like to update.")
    }

    if updateEmail.text != "" {

        let user = FIRAuth.auth()?.currentUser

        user?.updateEmail(updateEmail.text!) { error in
            self.ref.child("users").child(self.currentUser).child("email").setValue(self.updateEmail.text!)

        }

        let emailUpdateRef = FIRDatabase.database().reference().child(currentUser).child("email")
        print(emailUpdateRef)
        emailUpdateRef.setValue(self.updateEmail.text)

        performSegue = true
    }

    if updateFullName.text != "" {
        let user = FIRAuth.auth()?.currentUser
        if let user = user {
            let changeRequest = user.profileChangeRequest()
            changeRequest.displayName = self.updateFullName.text!
        }
        performSegue = true
    }

    if performSegue == true {
        self.navigationController!.popViewControllerAnimated(true)
    }
}

我可以在授权下更新电子邮件,但不能在数据库下更新。任何帮助将不胜感激。

【问题讨论】:

  • 你说的“授权下但不在数据库下”是什么意思?你有用户的数据库规则:{用户:{电子邮件:“somethid@gmail.com”}}?
  • Inside user?.updateEmail(updateEmail.text!) { self.ref.child("users").child(self.currentUser).child("email").setValue(self .updateEmail.text!) } 你可能想检查 if (error != nil) { print("something wrong occurred!!"}
  • 不,我的意思是在数据库下没有授权
  • 我已经得到授权部分了
  • 我已经回答了你的问题:)快乐编码

标签: swift firebase firebase-authentication user-profile


【解决方案1】:

如果 JSON 树是这样的:-

 appName{
     users :{
         userID :{
             email : "..",
             username : ".."
         }
     }
 }

使用此代码更新节点的子值:-

func saveTapped(){

if ((updateEmail.text != "" || updateFullName.text != "") && (updateEmail.text != nil || updateFullName.text != nil)){

    let userRef = FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid)
    if let new_Email = updateEmail.text as? String{

        FIRAuth.auth()!.currentUser!.updateEmail(updateEmail.text!) { error in

            if error == nil{
                userRef.updateChildValues(["email" : new_Email ], withCompletionBlock: {(errEM, referenceEM)   in

                    if errEM == nil{
                        print(referenceEM)
                    }else{
                        print(errEM?.localizedDescription)
                    }
                })
            }
        }else{
            self.cleanUrCodeRohan("Email couldn't be updated in auth")
        }
    }

    if let new_Name = updateFullName.text as? String{

        userRef.updateChildValues(["username" : new_Name ], withCompletionBlock: {(errNM, referenceNM)   in

            if errNM == nil{
                print(referenceNM)
            }else{
                print(errNM?.localizedDescription)
            }
        })
    }

}else{

    self.cleanUrCodeRohan("Please fill in one or more of the missing text fields that you would like to update.")

    }
}

【讨论】:

  • 我还有一个问题,我将如何更新保存在我的数据库中的照片网址。它与您在上面显示的同一棵子树只是有另一个称为照片 URL 的东西:“照片 URL”。任何帮助,将不胜感激。谢谢!
  • 它不允许我这样做我没有足够的声誉。对不起!
  • @RohanVasishth 很高兴为您提供帮助。删除您以前的 cmets 并接受所有以前的答案,这些答案可以帮助您在以前的查询中解决您的问题,以便其他用户知道答案是否有帮助,这通常只是一件好事:) 快乐编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2022-01-05
  • 2020-06-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多