我的目标是通过第一个用户的唯一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 回答
您无法从客户端实际执行此操作:创建新用户后,将自动对其进行身份验证,并且当前用户未经身份验证 .
但是,您可以在创建新用户之前将当前uid写入Firebase,或者在“全局”var中捕获当前uid,以便在原始问题的结构中创建新用户后可以存储它 .
另一种选择是在特定客户“注册”时通知管理员用户 - 这可能是监视特定电子邮件的“新用户节点” . 一旦管理员收到新用户的通知,他们将看到uid,然后可以写出相应的节点 .
看看这篇文章Firebase kicks out current user,其中包含与主题和更新信息相关的详细信息Firebase添加了一些可能有用的服务器功能 .
希望Firebase将在未来为客户创建用户提供另一种选择,因为创建可以创建其他用户的“管理员”用户应该是更具挑战性的 .