2017-10-11 14 views
0

ログイン後、ログインしたユーザーのユーザー情報を取得したいとします。AndroidのFirebaseでログインした後にユーザー情報を取得する

私はそれを行うにはどのようには考えています。ここで

は私のコードです:

public class Dashboard extends Fragment { 

    FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance(); 
    FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser(); 

    private DatabaseReference mDatabase; 


    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_dashboard, container, false); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("Chamas").child("Users"); 

     mFirebaseUser.getName(); 
      // User ID 
     mFirebaseUser.getUid(); 
      // Email-ID 
     mFirebaseUser.getEmail(); 
      // User-Profile (if available) 
     mFirebaseUser.getPhone(); 

     return view; 
    } 

これは、あなたがそれを置くことによって、アプリも初期化される前に、認証の状態を使用しようとしている、すべてで誰かが私を助けてくださいすることができます

答えて

1

が動作していませんクラス定義に追加します。これは、認証資格情報を確認するための非同期呼び出しが完了するのに待たれます。

としては、ガイドhereに説明し、「認証オブジェクトが初期化が完了していないためGETCURRENTUSERもnullを返すことがあります。」

それはあなたが認証ワークフローに関するすべての情報が含まれていないので、あなたが実際にここで必要なものを言うには少し難しいです。あなたは、例に示すようにONSTART()内のユーザデータをフェッチすることもできます。

private FirebaseUser user; 

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); 

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 

    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, store user data 
         user = mAuth.getCurrentUser(); 
        } else { 
         // Sign in fails... 
        } 
        // ... 
       } 
      }); 
} 

別のアプローチは、認証を監視することです:

@Override 
public void onStart() { 
    super.onStart(); 
    // Check if user is signed in (non-null) and update UI accordingly. 
    FirebaseUser currentUser = mAuth.getCurrentUser(); 
    updateUI(currentUser); 
} 

別のアプローチは、認証が完了した後、ユーザーデータを格納することです状態:

FirebaseUser user; 

@Override 
private void onCreate() { 
    firebaseAuth = FirebaseAuth.getInstance(); 
    new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     if(firebaseAuth.getCurrentUser() != null) { 
      user = firebaseAuth.getCurrentUser(); 
     } 
     } 
    }; 
} 
関連する問題