首页 文章

如何存储使用Swift 3在Firebase中创建另一个新用户的已登录用户的UID?

提问于
浏览
0

我的目标是通过第一个用户的唯一UID(换句话说,用户B属于用户A)将两个用户链接在一起 .

我采取了以下步骤:

  • 我注册了一个新用户(A),其中包含电子邮件和密码验证 .

  • 我使用此用户登录(A) . 此用户表示角色"superuser" .

  • 我在用户(A)登录时创建了一个新用户(B) . 用户(B)代表角色"simpleuser" .

  • 我想将新用户(B)的用户信息(UID,电子邮件,密码)与登录用户(A)的UID一起存储,以便Firebase中的结果如下所示:

root
    -superusers
        -Bl41OxkohiNFc3
            -email: superuser@example.de
            -password: test
    -simpleusers
        -Vl21OxkohiFFc3HQ
            -superuserUID: Bl41OxkohiNFc3
            -email: @example.de
            -password: test

我遇到了步骤Nr.4的问题 . Xcode / Firebase不会保存用户A的UID,它总是将用户B的UID保存在superuserUID中 .

这是我的Step4代码:

@IBAction func RegisterSimpleUser(_ sender: Any) {
FIRAuth.auth()?.createUser(withEmail: autoemail, password: autopassword, completion: {(user, error) in

        if error != nil {
            print(error!.localizedDescription)

        } else {
            print ("User created")
        }

        let userID: String = user!.uid
        let userEmail: String = simepleuser_email
        let userPassword: String = simpleuser_password 
        let SuperUserID: String = (FIRAuth.auth()?.currentUser?.uid)!

//simepleuser_email, simpleuser_password coming from Text Fiels       

         ref.child("simpleusers").child(userID).setValue(["SuperUserID": SuperUserID, "Email": userEmail, "Password": userPassword])
}

我究竟做错了什么?任何人都可以帮助我或指出我正确的方向吗?我是Firebase / Swift的新手 . 谢谢 .

1 回答

  • 1

    您无法从客户端实际执行此操作:创建新用户后,将自动对其进行身份验证,并且当前用户未经身份验证 .

    但是,您可以在创建新用户之前将当前uid写入Firebase,或者在“全局”var中捕获当前uid,以便在原始问题的结构中创建新用户后可以存储它 .

    另一种选择是在特定客户“注册”时通知管理员用户 - 这可能是监视特定电子邮件的“新用户节点” . 一旦管理员收到新用户的通知,他们将看到uid,然后可以写出相应的节点 .

    看看这篇文章Firebase kicks out current user,其中包含与主题和更新信息相关的详细信息Firebase添加了一些可能有用的服务器功能 .

    希望Firebase将在未来为客户创建用户提供另一种选择,因为创建可以创建其他用户的“管理员”用户应该是更具挑战性的 .

相关问题