2016-12-17 8 views
1

すでに登録済みのユーザに自動的にログインしようとしています。私のユーザーがFacebookのみで登録されていても、複数のユーザーがgetCurrentUserを返すときに問題が発生します。最初のユーザーがなぜ表示されているのかわかりません。これは、打ち上げ活動にauthStateListnerための私のコードです:このコードブロックのAndroid用Firebase APIで複数のログインユーザを取得する

mAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      int i = 0; 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if(user == null){ 
       Intent loginIntent = new Intent(StartActivity.this, LoginActivity.class); 
       startActivity(loginIntent); 
       return; 
      } 
       for(UserInfo info : firebaseAuth.getCurrentUser().getProviderData()){ 
        Log.d(START_ACTIVITY_TAG, "" + i++); 
        if(info == null){ 
         Intent loginIntent = new Intent(StartActivity.this, LoginActivity.class); 
         startActivity(loginIntent); 
        } 


        if(info.getProviderId().contentEquals("google.com")){ 
         Log.d(START_ACTIVITY_TAG,info.getProviderId()); 
         Log.d(START_ACTIVITY_TAG,"Official Login" + info.getEmail()); 
         Intent officialIntent = new Intent(StartActivity.this, OfficialActivity.class); 
         officialIntent.putExtra("emailId",info.getEmail()); 
         startActivity(officialIntent); 
        }else if(info.getProviderId().contentEquals("facebook.com")){ 
         Log.d(START_ACTIVITY_TAG,info.getProviderId()); 
         Log.d(START_ACTIVITY_TAG,"Resident Login through fb"); 
         Intent reportIntent = new Intent(StartActivity.this, ReportActivity.class); 
         reportIntent.putExtra("resident_id", info.getEmail()); 
         startActivity(reportIntent); 
        }else{ 
         Log.d(START_ACTIVITY_TAG,info.getProviderId()); 
         Log.d(START_ACTIVITY_TAG,"Resident Login normal" + info.getEmail()); 
         Intent reportIntent = new Intent(StartActivity.this, ReportActivity.class); 
         reportIntent.putExtra("resident_id",info.getEmail()); 
         startActivity(reportIntent); 
        } 
      } 
     } 
    }); 

私のログ、次のようにされています。私には期待通りの出力が見えます

D/Start_Activity: firebase 
D/Start_Activity: Resident Login normalnull 
D/Start_Activity: 1 
D/Start_Activity: facebook.com 
D/Start_Activity: Resident Login through fb 
D/Start_Activity: 0 
D/Start_Activity: firebase 
D/Start_Activity: Resident Login normalnull 
D/Start_Activity: 1 
D/Start_Activity: facebook.com 
D/Start_Activity: Resident Login through fb 

答えて

0

最初の出力には、Firebaseが内部的に作成したUserInfoが表示されます。 2番目の出力には、Facebookから取得したプロバイダデータが表示されます。

関連する問題