I've following problem with Facebook SDK 3.0 for Android. I wanna get my (and my friends) profile picture without using their ProfilePictureView widget, so if I use Graph Explorer I see that Json response is:
{
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/372127_1377011138_1538716206_q.jpg",
"is_silhouette": false
}
}
I need that "url" path to download and show the picture, but with the following code:
Request.executeGraphPathRequestAsync(Session.getActiveSession(),
"me/picture",
new Request.Callback() {
@Override
public void onCompleted(Response response) {
GraphObject go = response.getGraphObject();
Log.i("APP_NAME", go.toString());
}
});
I obtain this:
GraphObject{graphObjectClass=GraphObject,
state={"FACEBOOK_NON_JSON_RESULT":"����\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u0000"}}
Someone can help me please? Thanks
Cromir
An easier way would be to execute a
GET
request tograph.facebook.com/USER_ID/picture
so you don't have to first request an URL to the picture, and then execute anotherGET
request to download the picture from the given URL.Instead of using
Request.executeGraphPathRequestAsync
, just do a normalGET
request to the URL above, e.g.http://graph.facebook.com/4/picture
.You probably need to enable "Picture As Dictionary" on the advanced settings of your app in the developer console at https://developers.facebook.com/apps
I got answer... it is due to redirection. hence pass
params
instead ofnull
:As far as I know, it's not possible to get the image directly using the facebook graph API, because their API is designed to only accept JSON responses. It seems weird that they would allow a request that results in a non-JSON response, and especially strange that they would put that request in their official documentation *(https://developers.facebook.com/docs/graph-api/reference/user/picture/).
I am using the built in Android DefaultHttpClient library.
You can get the profile picture by requesting to the Graph API. You need to pass the accessToken ,the user ID and also set the redirect false. Then the Graph API returns the JSON and from the JSON you can get url field which is the user profile.