2017-02-05 1 views
0

Моя цель - связать двух пользователей вместе с помощью уникального UID первого пользователя (другими словами, пользователь B принадлежит пользователю A).Как сохранить идентификатор пользователя loggedin Пользователь, создавший нового пользователя в Firebase с помощью Swift 3?

Я принял следующие шаги:

  1. Я зарегистрировал новый пользователь (A) с электронной почтой и паролем аутентификацией.
  2. Я вошел с этим пользователем (A). Этот пользователь представляет роль «суперпользователь».
  3. Я создаю нового пользователя (B), когда пользователь (A) регистрируется. Пользователь (B) представляет роль «simpleuser».
  4. Я хочу сохранить информацию пользователя (UID, E-Mail, Пароль) нового пользователя (B) вместе с идентификатором пользователя loggedin (A), чтобы результат в Firebase выглядел примерно так:

    root 
        -superusers 
         -Bl41OxkohiNFc3 
          -email: [email protected] 
          -password: test 
        -simpleusers 
         -Vl21OxkohiFFc3HQ 
          -superuserUID: Bl41OxkohiNFc3 
          -email: @example.de 
          -password: test        
    

У меня проблемы с этапом Nr.4. Xcode/Firebase не сохранит UID пользователя A, он всегда сохраняет UID пользователя B в superuserUID.

Вот мой код Шаг 4:

@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 перед созданием нового пользователя или захватить текущий uid в глобальном var, чтобы сохранить его, как только новый пользователь будет создан в структуре из исходного вопроса.

Другой вариант заключается в том, чтобы администратор был уведомлен о том, что конкретный клиент «подписывается» - это может отслеживать «новый пользовательский узел» для определенного адреса электронной почты. Как только администратор будет уведомлен о новом пользователе, они будут представлены с uid, а затем могут выписать соответствующий узел.

Отметьте это сообщение Firebase kicks out current user, в котором содержится хорошая информация, связанная с темой и обновленной информацией о том, где Firebase добавила некоторые функции сервера, которые могут вам помочь.

Надеюсь, Firebase предоставит еще один вариант для создания пользователя от клиента в будущем, поскольку создание пользователя «admin», который может создавать других пользователей, намного сложнее, чем это должно быть.

+0

Вы должны получить значок «Великие воскресные навыки разбора» Jay! :-) –

+1

@FrankvanPuffelen lol! Это чертовски аутентичное дело было болью, поэтому оно «дорого» для моего сердца, и я внимательно слежу за ним. – Jay