菜鸟教程小白 发表于 2022-12-11 18:15:08

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


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

<p>这里是我的 <em>userDetilsViewController</em> </p>

<pre><code>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(&#34;users&#34;)
    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(&#34;users&#34;)

    if Username.text == &#34;&#34; {
      Username.text = &#34;enter title&#34;
    } else {
      user_name = Username.text
    }

    if Firstname.text == &#34;&#34;{
      Firstname.text = &#34;Firstname Missing&#34;
    } else {
      first_name = Firstname.text
    }

    if Lastname.text == &#34;&#34; {
      Lastname.text = &#34;Lastname Missing&#34;
    } else {
      last_name = Lastname.text
    }

    if phNo.text == &#34;&#34; {
      phNo.text = &#34;Phno Missing&#34;
    } else {
      ph_no = phNo.text
    }

    if email.text == &#34;&#34; {
      email.text = &#34;email Missing&#34;
    } 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: &#34;Update Email&#34;, message: &#34;email Updated&#34;, delegate: self, cancelButtonTitle: &#34;Ok&#34;)
            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(&#34;/users/\(key)&#34;)

    updateRef.updateChildValues(updatenote.toAnyObject())
    navigationController?.popViewControllerAnimated(true)
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我认为问题出在以下几行:</p>

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

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

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

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

<p>请注意,我可能完全错了......</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在firebase中更新当前用户电子邮件和密码(在用户节点和身份验证中)?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40947075/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40947075/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在firebase中更新当前用户电子邮件和密码(在用户节点和身份验证中)?