• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何在firebase中更新当前用户电子邮件和密码(在用户节点和身份验证中)?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:15:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试更新我的用户详细信息页面(用户名、电话号码、电子邮件和密码)。无法更新电子邮件字段,以防它被更新意味着不在两者中(用户和身份验证)。任何 hlp 将不胜感激。 swift2.2中的.plz代码

这里是我的 userDetilsViewController

class UserDetailsViewController: UIViewController {

var user:UserDetails?
let userRegister = UserInfo()
var user_name:String?
var first_name:String?
var last_name:String?
var ph_no:String?
var e_mail:String?
var pass_word:String?
var activeField: UITextField?

@IBOutlet var Username: UITextField!
@IBOutlet var Firstname: UITextField!
@IBOutlet var Lastname: UITextField!
@IBOutlet var email: UITextField!
@IBOutlet var phNo: UITextField!
@IBOutlet var password: UITextField!

var rootRef: FIRDatabaseReference! {
    return FIRDatabase.database().reference()
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    let userRef = FIRDatabase.database().reference().child("users")
    userRef.observeEventType(.Value, withBlock: { (snapshot)  in

        for userInfo in snapshot.children {
            self.user = UserDetails(snapshot: userInfo as! FIRDataSnapshot)
            print(self.user)
        }
        if let user = self.user{
            self.Username.text = user.username
            self.Firstname.text = user.firstname
            self.Lastname.text = user.lastname
            self.email.text = user.email
            self.phNo.text = user.phno
        }
    })

    self.navigationController?.popViewControllerAnimated(true)

}
@IBAction func reset(sender: AnyObject) {

    let userRef = FIRDatabase.database().reference().child("users")

    if Username.text == "" {
        Username.text = "enter title"
    } else {
        user_name = Username.text
    }

    if Firstname.text == ""{
        Firstname.text = "Firstname Missing"
    } else {
        first_name = Firstname.text
    }

    if Lastname.text == "" {
        Lastname.text = "Lastname Missing"
    } else {
        last_name = Lastname.text
    }

    if phNo.text == "" {
        phNo.text = "hno Missing"
    } else {
        ph_no = phNo.text
    }

    if email.text == "" {
        email.text = "email Missing"
    } else {
      if let user = FIRAuth.auth()?.currentUser {
          user.updateEmail(email.text!, completion: { (error) in

            if let error = error{
              print(error.localizedDescription)
            } else {
              let alertView = UIAlertView(title: "Update Email", message: "email Updated", delegate: self, cancelButtonTitle: "Ok")
              alertView.show()
            }
         })
         self.e_mail = self.email.text
         print(self.e_mail)
      }
    }

    let updatenote = UserDetails(username: user_name!, firstname: first_name!, lastname: last_name!, email: e_mail!, phno: ph_no!)

    print(updatenote)

    let key = user!.ref!.key
    print(key)

    let updateRef = rootRef.child("/users/\(key)")

    updateRef.updateChildValues(updatenote.toAnyObject())
    navigationController?.popViewControllerAnimated(true)
}



Best Answer-推荐答案


我认为问题出在以下几行:

if let user = FIRAuth.auth()?.currentUser {
     user.updateEmail(email.text!, completion: { (error) in

“用户”是当前用户的副本,而不是对当前用户的引用,因此当您更新用户时,您并没有更新实际的当前用户。

尝试使用此代码更新用户电子邮件地址 - 还要记住,要更新电子邮件,用户必须最近登录。即您必须以用户身份登录才能更改电子邮件。

FIRAuth.auth()?.currentUser?.updateEmail(email.text!) { (error) in
  // ...
}

请注意,我可能完全错了......

关于ios - 如何在firebase中更新当前用户电子邮件和密码(在用户节点和身份验证中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947075/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap