2017-06-08 5 views
0

にProviderDataからFirebaseAuthのUserInfoを組み合わせ、これはFirebaseは、ユーザーのアカウント情報を引き出す持っているかである。をGoogle経由でログインしてFirebaseAuthユーザーから引き出されたデータをログインした後、1人の包括的なユーザー

プロファイル情報を取得するにはユーザーにリンクされているサインインプロバイダから取得した場合は、getProviderDataメソッドを使用します。私は、各profileから引き出した情報をログに記録する場合

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
if (user != null) { 
    for (UserInfo profile : user.getProviderData()) { 
     // Id of the provider (ex: google.com) 
     String providerId = profile.getProviderId(); 

    // UID specific to the provider 
    String uid = profile.getUid(); 

    // Name, email address, and profile photo Url 
    String name = profile.getDisplayName(); 
    String email = profile.getEmail(); 
    Uri photoUrl = profile.getPhotoUrl(); 
    }; 
} 

私は、次のカップルの不完全なデータセットを取得:

06-08 12:48:12.851 14400-14400/com.example.app D/MainActivity: providerId: firebase, uid: 1***************2, name: null, email: d**********[email protected], url: null 
06-08 12:48:12.851 14400-14400/com.example.app D/MainActivity: providerId: google.com, uid: 1************5, name: D*******y, email: null, url: https://lh4.googleusercontent.com/.../photo.jpg 

は、ユーザ情報を組み合わせ、よりアクセスして、それを保存する標準的な手段がありますデータセット? FirebaseAuth(少なくともこの例では)は、実行時にユーザー情報を取得するための最もきれいな方法ではないようです。

答えて

1

currentUserのproviderDataを取得する他の方法はありません。私はあなたがそのリストを横断するのではなく、providerIdのようないくつかのキーでデータを参照することを好むと仮定します。キー/値マップなどの好きな構造を使用して、このデータをリアルタイムデータベースに複製することができます。

関連する問題