2016-08-09 13 views
1

AndroidベースのアプリケーションにFirebase Authを追加しました。FacebookとGoogleを使用してログインしています。今私は、ユーザーのFacebookプロフィールまたはGoogleアカウント(ユーザーがサインインすることを選択したもの)からユーザープロフィール情報を取得し、ユーザープロフィール活動にその情報を表示したいと考えています。ユーザー名とユーザーのUIDを取得して表示することはできますが、取得してもユーザーの電子メールとユーザーの写真は表示されません。Firebase Auth:Android:ユーザーのメールと写真を表示できません

ここ
authStateListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 

       FirebaseUser user = firebaseAuth.getCurrentUser(); 

       if (user != null) { 
        //User is signed in 

        for (UserInfo userInfo : user.getProviderData()){ 

         String user_name = userInfo.getDisplayName(); 
         String user_email = userInfo.getEmail(); 
         Uri user_img = userInfo.getPhotoUrl(); 
         String user_id = userInfo.getUid(); 

         SharedPreferences preferences = getSharedPreferences(UserInfoConstants.STRING_NAME,0); 
         SharedPreferences.Editor editor = preferences.edit(); 
         editor.putString(UserInfoConstants.KEY_USER_NAME, user_name); 
         editor.putString(UserInfoConstants.KEY_USER_EMAIL, user_email); 
         editor.putString(UserInfoConstants.KEY_USER_ID, user_id); 
         editor.putString(UserInfoConstants.KEY_USER_IMG, user_img != null ? user_img.toString() : null); 
         editor.apply(); 
        } 

       } else { 
        //User is signed out 
        return; 
       } 
      } 
     }; 

がどのようにユーザー情報を表示していますされる(ProfileActivity.java):

SharedPreferences preferences = getSharedPreferences(LoginActivity.UserInfoConstants.STRING_NAME,0); 

     String user_img_uri = preferences.getString(LoginActivity.UserInfoConstants.KEY_USER_IMG,""); 

     if (user_img_uri.isEmpty()){ 

      userImgView.setImageResource(R.drawable.com_facebook_profile_picture_blank_portrait); 
     } else { 

      userImgView.setImageBitmap(getImageBitmap(user_img_uri)); 
     } 
     userName.setText(preferences.getString(LoginActivity.UserInfoConstants.KEY_USER_NAME,"")); 
     userEmail.setText(preferences.getString(LoginActivity.UserInfoConstants.KEY_USER_EMAIL,"")); 
     userId.setText("ID: " + preferences.getString(LoginActivity.UserInfoConstants.KEY_USER_ID,"")); 

I Iは、ユーザ情報(LoginActivity.java)を検索していますどのようにここで

ですそれについてたくさんの検索をしましたが、同じ解決策を得ることはできません。

誰でも手伝いできますか?

答えて

2

Uriの参照は、常にnullです。

String uri = userInfo.getPhotoUrl().toString; 

や好みに渡し、その後、このようにそれを設定します:このような文字列として保存するようにしてください

String fbImage = pref.getString("ImageUri", ""); 

if (fbImage != null && !fbImage.isEmpty()) { 
      Picasso.with(getApplicationContext()) 
        .load(fbImage) 
        .placeholder(R.drawable.img_circle_placeholder) 
        .resize(avatarSize, avatarSize) 
        .centerCrop() 
        .transform(new CircleTransformation()) 
        .into(ImageViewObject); 

     } 

をあなたのGradleにピカソの依存関係を追加したことを確認してください。 EMAILIDため

compile 'com.squareup.picasso:picasso:2.3.2' 

String email = pref.getString("email", null); 

//try to check here 
Log.w("email", ""+email); 

if(email != null && !email.isEmpty()){ 
    textEmail.setText(""+email); 
} 

か、これは確かに仕事で意図サービスを使用することができます。

アクティビティをログインで:

Intent intent = new Intent(this, MainActivity.class); 
intent.putExtra("email_id", email_id); 
startActivity(intent); 
finish(); 

and in your mainActivity: 

Intent intent = getIntent(); 
String email = intent.getStringExtra("email_id"); 

textEmail.setText(""+email); 

更新-2

1つのfirebaseメソッドがあり、それを行う最も簡単な方法があります。あなたがデータをretriveしたいあなたの第二の活動でこのコード

書き込み..

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
TextView email; 

email.setText(""+ user.getEmail()); 

sharedPrefrenceまたは意向サービスの必要はありません。

+0

ねえ。返信ありがとう。私はこれを試してみましょう。 –

+0

ようこそ。 –

+0

ねえ、トンの男に感謝!完璧に動作しています! Plsはまた、ユーザーの電子メールIDを取得する方法も教えています。電子メールIDを取得していますが、表示されていません。 –

関連する問題