Firebase在每个视图中修改uid

时间:2017-10-19 19:26:46

标签: ios swift firebase firebase-authentication

我是swift的新手,我正在尝试使用多个视图制作注册表单。问题是在调用 Auth.auth()。currentUser?.uid 之后 我在每个视图中得到一个不同的String,无法继续在一个特定的UID上工作。我做错了什么?

我正在使用firebase函数createUser创建用户:

 Auth.auth().createUser(withEmail: emailField.text!, password: 
 passField.text!, completion: { (user, error) in
            if let error = error {
                print(error)
            }
            if let user = user {
                let userInfo: [String : Any] = ["uid": UserModel().getUID(),
                                                "username": self.usernameField.text!, "avatar_icon" : ""]
                self.ref.child("users").child(user.uid).setValue(userInfo)
            }
        })

我已经尝试创建一个包含该特定字符串的模型类,但是会得到相同的错误结果。

import Foundation
import Firebase

class UserModel {
    var userID : String

    init() {
       self.userID = (Auth.auth().currentUser?.uid)!
  }

    func getUID() -> String {
       return self.userID
  }

}

我的第一个注册视图控制器是Register1ViewController,我将调用 UserModel.init(),将来使用 UserModel()。getUID()获取uid查看控制器。

1 个答案:

答案 0 :(得分:0)

在firebase中,每个经过身份验证的用户只有一个“唯一”uID,如您所知。因此,当您以用户身份登录时,您应该在查询时始终获得相同的uID。从这里很难说这个,因为你提供了这段代码的一小部分。你应该提供更多来得到答案。

编辑: 看起来您每次活动开始时都在调用createuser。这意味着每次运行代码时都要创建另一个用户。

  

Auth.auth()。currentUser?.uid

返回不同的uID。您应该注册一次并在其他时间登录。你可以查看下面的教程。但不要只看片段,打开github代码。

https://www.appcoda.com/firebase-login-signup/