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

时间:2017-02-05 12:25:25

标签: ios firebase swift3 firebase-authentication

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

我采取了以下步骤:

  1. 我使用电子邮件和密码验证注册了新用户(A)。
  2. 我使用此用户登录(A)。此用户代表角色"超级用户"。
  3. 我在用户(A)登录时创建了一个新用户(B)。用户(B)代表角色" simpleuser"。
  4. 我想将新用户(B)的用户信息(UID,电子邮件,密码)与登录用户(A)的UID一起存储,以便Firebase中的结果如下所示:

    root
        -superusers
            -Bl41OxkohiNFc3
                -email: superuser@example.de
                -password: test
        -simpleusers
            -Vl21OxkohiFFc3HQ
                -superuserUID: Bl41OxkohiNFc3
                -email: @example.de
                -password: test                             
    
  5. 我遇到步骤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 个答案:

答案 0 :(得分:1)

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

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

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

查看此帖子Firebase kicks out current user,其中包含与该主题相关的详细信息以及Firebase添加了一些可能有用的服务器功能的更新信息。

希望Firebase将提供另一个选项,以便将来通过创建“管理员”来创建用户。可以创建其他用户的用户应该是更具挑战性的。