2016-10-18 15 views
0

Authで特定のユーザーのユーザーIDを取得する方法を知っていますか?Xcode Firebaseは他のユーザーとしてログインしている間に認証されたユーザーを取得します

私は他のユーザーのユーザーID [email protected]しばらく取得したい場合、私は

let userId = FIRAuth.auth()?.currentUser?.uid 

でユーザーIDを取得することができますが、のは、私は現在のユーザー[email protected]でログインしていましょう私は[email protected]としてログインしています。

どうすればいいですか?添付された画像で認証されたユーザにつながる

FIRAuth.auth()?.createUser(withEmail: txtUsername.text!, password: txtPassword.text!, completion: { 
      user, error in 

      if error != nil { 
       print("error: " + error.debugDescription) 
      } 
      else{ 
       print("User created") 
       self.login() 
      } 
     }) 

enter image description here

は、これは私が新しいユーザーを作成する方法です。

私もUsersテーブルを持っていますが、これはログインのためにユーザーを認証することとは関係ありません。

enter image description here

事は、私はプログラム的に新しい認証されたユーザーを追加する必要があるということです。これは問題ありませんが、認証済みテーブルからデータをクエリするにはどうすればよいですか?認証されたuidをデータベースの各ユーザのルートに追加する(ユーザテーブルイメージ参照)

+0

firebaseデータベースより – Dravidian

+0

*「Firebaseコンソールまたはコード内にあるのですか?」というメッセージが表示された場合 – Jay

答えて

0

各ユーザについて、Firebaseデータベースにレコードを作成し、各ユーザにuidを保存してあなたが一度それを必要としたらuid

uidの情報を、そのユーザーのメール情報(あなたの場合は[email protected])を使用してクエリする場合は、uidなどのユーザー情報をそれぞれのユーザーの電子メールのキーの下に保存することをお勧めします。

+0

電子メールをキーとして使用すると、電子メールアドレスが変更される可能性があります。 Firebaseの他の領域(一般的なもの)の電子メールでユーザーが電子メールを変更すると、ユーザーの電子メールが変更されたときに破損することがあります。 – Jay

0

コンソールではなくコードでログインしている場合、1つのオプションは/ usersノードを活用することです。

Firebaseでは、ユーザーに関する情報を格納する/ usersノードを持つことが一般的です。

users 
    uid_001 
    email: "[email protected]" 
    name: "Dr. Who" 
    fav_food: "Jelly Babies" 
    uid_002 
    email: "[email protected]simpsons.com" 
    name: "Homer Simpson" 
    fav_food: "Doughnuts" 

各ユーザノードのキーとして使用されるuidは、ユーザの作成時にFirebaseによって作成されるものです。

そこから、問題のノードを取得する電子メールアドレスを問い合わせることができます。親キーはユーザーのuidです。

+0

はい、あなたが追加したようなユーザーノードを持っていますが、各サブノードのキーは認証されたuidです。新しい認証されたユーザーをプログラムで作成するたびに、あなたのユーザノードのサブノードを追加するには(あなたのuid_001とdid_002のように) – TommyF

+0

@TommyFああ、あなたはFirebase 3の私の問題。この回答とAndre [Firebaseが現在のユーザーを呼び出す](http://stackoverflow.com/questions/37517208/firebase-kicks-out-current-user/38013551#38013551)の素晴らしい回避策を確認してください。あなたが/ usersノードにノードを作成できるように、別のfirebaseアカウントを使用してユーザーを作成し、uidを取得することです。 – Jay

+0

これは面白そうです。しかし、私は迅速に第二の口座を設定する方法を見つけることができません。あなたは知っていますか?) – TommyF

関連する問題