5

メールアドレスを指定すると、その人のuserIDを取得する可能性はありますか?たとえば、ユーザーごとにユーザーIDを取得する方法Firebase android?

私はその人の電子メールを持つ可変電子メールを持っています。

String userID = mAuth.DatabaseReference.getuID.(email); 

申し訳ありませんが、これは愚かな質問です。

編集:現在のユーザーではないユーザーのIDを取得しようとしています。だから私は使用できませんFirebaseUser user = mAuth.getCurrentUser();

私のデータベースの構造は、このように見えるので、IDは既にデータベースに格納されます。私はちょうどそれを取得する方法が必要です(下の図では私は電子メールのフィールドを持っていませんが、私は誰か追加しています。

また、可能であれば、自分のメールに基づいてプロフィール画像を取得したい、またはIDからIDを取得しています。

enter image description here

+0

[ここにあなたの質問に対して同様の答えを確認してください。 firebaseから電子メールIDを取得する](https://stackoverflow.com/a/49002292/9405186) –

答えて

8

あなたが信頼されたサーバー上での電子メールでユーザーを検索したい場合は、Firebase管理SDKを使用することができます。 documentation on retrieving user dataから:

admin.auth().getUserByEmail(email) 
    .then(function(userRecord) { 
    // See the tables above for the contents of userRecord 
    console.log("Successfully fetched user data:", userRecord.toJSON()); 
    }) 
    .catch(function(error) { 
    console.log("Error fetching user data:", error); 
    }); 

Firebase認証のためのクライアントのSDKは、現在認証されたユーザのプロファイルへのアクセスを提供します。彼らは電子メールアドレスでユーザーを検索する方法を提供しません。クライアント側の検索を可能にするには、そうするための一般的な方法は、データベース内のUIDごとの電子メールアドレスを格納することです。この単純なリストでは

"emailToUid": { 
    "[email protected],com": "uidOfSumOne", 
    "[email protected],com": "uidOfPuf" 
} 

、あなたは、エンコードされた電子メールでUIDを調べることができますアドレスから:

ref.child("emailToUid").child("[email protected],com").addSingleValueEventListener(... 

も参照してください:

+0

したがって、uidに値を格納する必要があります。電子メールを使用してルート要素からuidを取得することはできません。現在のユーザーではなく、その人の画像プロファイルを取得することもできますか? – SumOne

+0

Firebase認証用のクライアントSDKは、現在認証されているユーザのプロファイルへのアクセスのみを提供します。私は私の答えでこれを明らかにした。 –

+0

ああ、ありがとう。申し訳ありませんが、私は完全に読まなかった。 – SumOne

0

あなたはメールアドレスとパスワードをユーザにログインしてIDを取得することができますこの方法:

FirebaseAuth.getInstance().signInWithEmailAndPassword(email,password).addOnSuccessListener(new OnSuccessListener<AuthResult>() { 
      @Override 
      public void onSuccess(AuthResult authResult) { 
       FirebaseUser user = authResult.getUser(); 
      } 
     }); 
関連する問題