我的目标是通过第一个用户的唯一UID(换句话说,用户B属于用户A)将两个用户链接在一起。
我采取了以下步骤:
我想将新用户(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的新手。感谢。
答案 0 :(得分:1)
您实际上无法从客户端执行此操作:创建新用户后,系统会自动对其进行身份验证,并且当前用户未经身份验证。
但是,您可以在创建新用户之前将当前uid写入Firebase,或者在全局'中捕获当前uid。 var,这样您就可以在原始问题的结构中创建新用户后存储它。
另一种选择是在特定客户注册时通知管理员用户' - 这可能是监控一个新用户节点'对于特定的电子邮件。一旦管理员收到新用户的通知,他们将看到uid,然后可以写出相应的节点。
查看此帖子Firebase kicks out current user,其中包含与该主题相关的详细信息以及Firebase添加了一些可能有用的服务器功能的更新信息。
希望Firebase将提供另一个选项,以便将来通过创建“管理员”来创建用户。可以创建其他用户的用户应该是更具挑战性的。