Je ne parviens pas à afficher la photo de profil Facebook de l'utilisateur dans mon imageView. J'essaye d'obtenir avec la bibliothèque Picasso. Vous avez une idée pour résoudre cela? Voici mes codes. Merci d'avance!

R.string.facebook_provider_id = "facebook.com"

Erreur:

FATAL EXCEPTION: main
Process: com.example.yunus.ototakip, PID: 3045 java.lang.RuntimeException: Unable to start activity

ComponentInfo{com.example.yunus.ototakip/com.example.yunus.ototakip.Hesabim}: java.lang.IllegalArgumentException: Target must not be null.

Hesabim.java

public class Hesabim extends AppCompatActivity {

public FirebaseAuth firebaseAuth;
public FirebaseUser user;
public CircleImageView userImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hesabim);
    userImage= (CircleImageView) findViewById(R.id.kullaniciHesapResmi);
    firebaseAuth = FirebaseAuth.getInstance();
    user = FirebaseAuth.getInstance().getCurrentUser();
    if(firebaseAuth.getCurrentUser()==null)
    {
        finish();
        startActivity(new Intent(this,Giris.class));
    }

    kullaniciMail.setText(firebaseAuth.getCurrentUser().getEmail());
    String facebookUserId = "";
    user = FirebaseAuth.getInstance().getCurrentUser();
    for(UserInfo profile : user.getProviderData()) {
        // check if the provider id matches "facebook.com"
        if(profile.getProviderId().equals(getString(R.string.facebook_provider_id))) {
            facebookUserId = profile.getUid();
        }
    }
    String photoUrl = "https://graph.facebook.com/" + facebookUserId + "/picture?type=medium";
    Picasso.with(this).load(photoUrl).into(userImage);

hesabim.xml

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/kullaniciHesapResmi"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/kullanici_pp"
            fancy:civ_border_color="@color/colorAccent"
            fancy:civ_border_width="2dp" />
0
Yunus 6 avril 2017 à 19:26

2 réponses

Meilleure réponse

J'espère que vous demandez d'abord la permission pour la photo de profil de facebook, bcz sans permission facebook ne vous permettra pas d'obtenir quoi que ce soit.

loginButton.setReadPermissions("public_profile", "email", "user_friends", "user_education_history", "user_hometown", "user_likes", "user_work_history");

Ou vous pouvez également utiliser le rappel Facebook pour obtenir l'image du profil de l'utilisateur, comme ceci.

private FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(final LoginResult loginResult) {

            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {
                            Log.e("response: ", response + "");
                            try {
                                String id = object.getString("id").toString();
                                String email = object.getString("email").toString();
                                String name = object.getString("name").toString();
                                String profilePicUrl = "https://graph.facebook.com/" + loginResult.getAccessToken().getUserId() + "/picture?type=large";
                                Log.d("imageFB", profilePicUrl);
                                Log.d("FB_ID:", id);


                                checkFBLogin(id, email, name, profilePicUrl);

                            } catch (Exception e) {
                                e.printStackTrace();
                            }

                            finish();
                        }

                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender,birthday,friends,likes,hometown,education,work");
            request.setParameters(parameters);
            request.executeAsync();
        }
1
Sagar Chavada 7 avril 2017 à 10:00

Vous pouvez obtenir l'image de profil en bonne résolution avec cette solution très simple:

Si vous avez suivi les exemples Firebase, utilisez la méthode updateUI à l'intérieur:

photoUrl = user.getPhotoUrl(); //here you get the picture

photoUrlstr = photoUrl.toString(); //here you store the link to quality

photoUrlstr = photoUrlstr + "?height=500"; //adjust quality

Glide.with(this).load(photoUrlstr).into(IVperfil); //put it in Imageview

J'espère que cela aide, car c'est trop de code simple.

2
Vega 11 août 2018 à 00:36