Firebase 在每个视图中修改 uid

Posted

技术标签:

【中文标题】Firebase 在每个视图中修改 uid【英文标题】:Firebase modifying uid in every view 【发布时间】:2017-10-19 19:26:46 【问题描述】:

我是 swift 新手,我正在尝试使用多个视图制作注册表单。问题是在调用 Auth.auth().currentUser?.uid 我在每个视图中得到一个不同的字符串,无法继续在一个特定的 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视图控制器。

【问题讨论】:

欢迎来到 ***!请更新您的问题以包含注册视图的代码。包括重现问题所需的最少、完整的代码量。请参阅this 链接了解更多信息。 【参考方案1】:

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

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

Auth.auth().currentUser?.uid

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

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

【讨论】:

我的整个代码与这个问题无关,在每个视图中只调用常见的:Auth.auth().currentUser?.uid 返回一个不同的字符串。我已经编辑了我的帖子并添加了 createUser 函数,就像我使用的那样。谢谢你的建议:)

以上是关于Firebase 在每个视图中修改 uid的主要内容,如果未能解决你的问题,请参考以下文章

Swift:从 Firebase 检索数据并在表格视图中显示

Firebase 分析 - 如何在事件详细信息视图中查看所有用户属性

iOS 上的 Firebase 参考

将数据从firebase加载到集合单元格内的tableview

每个 tableViewCell 中的 Firebase 数据库观察者

Firebase - iOS Swift:使用从两个单独的子节点检索到的数据加载表格视图单元格