2017-02-05 9 views
0

私の目標は、最初のユーザーの一意のUID(つまり、ユーザーBはユーザーAに属します)を介して2人のユーザーをリンクさせることです。ログインしたユーザーのUIDを保存する方法Swift 3を使用してFirebaseに別の新しいユーザーを作成したユーザーですか?

私は、次の手順を取った:

  1. 私はメールアドレスとパスワード真偽を持つ新しいユーザー(A)を登録。
  2. このユーザーとログインしました(A)。このユーザーは役割「スーパーユーザー」を表します。
  3. ユーザー(A)がログイン中に新規ユーザー(B)を作成します。ユーザー(B)はロール「simpleuser」を表します。
  4. 新しいユーザ(B)のユーザ情報(UID、Eメール、パスワード)をログインしたユーザ(A)のUIDと一緒に保存して、Firebaseの結果が次のようになるようにします。

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

手順4に問題があります。 Xcode/FirebaseはユーザAのUIDを保存しません。ユーザBのUIDは常にスーパーユーザUIDに保存されます。ここで

は、ステップ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

クライアントから実際には実行できません。新しいユーザーが作成されると、自動的に認証され、現在のユーザーは認証されません。

しかし、新しいユーザを作成する前にFirebusに現在のuidを書き込んだり、現在のuidを 'グローバル' varに取り込んだりすることができるので、元の質問の構造に新しいユーザが作成されたときに保存できます。

もう1つの方法は、特定のクライアントが「サインアップ」したときに通知することです。特定のメールの「新しいユーザーノード」を監視することができます。管理者に新しいユーザが通知されると、uidが提示され、対応するノードを書き出すことができます。

Firebase kicks out current userこの記事には、トピックに関連した優れた情報と、Firebaseが役立つサーバー機能を追加した最新情報が含まれています。

今後Firebaseは、他のユーザーを作成できる「管理者」ユーザーを作成することにより、将来的にクライアントからユーザーを作成するためのもう1つの選択肢を提供してくれるはずです。

+0

あなたはバッジを取得する必要があります "素晴らしい日曜の朝パッシングスキル"ジェイ! :-) –

+1

@FrankvanPuffelen lol!それは、ユーザー認証の難しさを痛感していたので、私の心に「親愛」しています。 – Jay

関連する問題