How to get facebook profile picture of user in facebook SDK Android
Solution 1
Auto redirection works automatically when original and redirected protocols are same.
So, try to load images from https instead of http : "https://graph.facebook.com/USER_ID/picture"; since image's url is "https://fbcdn-profile-a.akamaihd.net/...."
Then BitmapFactory.decodeStream
shall work again.
Solution 2
Try this code,
try {
URL image_value = new URL("http://graph.facebook.com/"+ user.getId()+ "/picture?type=large");
Bitmap bmp = null;
try {
bmp = BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
profile_pic.setImageBitmap(bmp);
} catch (MalformedURLException e) {
e.printStackTrace();
}
here profile_pic
is your ImageView
replace it with your ImageView
Name.
Edit
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
try {
URL image_value = new URL("http://graph.facebook.com/"+ user.getId()+ "/picture?type=large");
Bitmap bmp = null;
try {
bmp = BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
profile_pic.setImageBitmap(bmp);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
});
} else {
Toast.makeText(getApplicationContext(), "Error...",
Toast.LENGTH_LONG);
}
}
});
Solution 3
Try this code
public static String getProfilePicture() {
String stringURL = null;
try {
stringURL = "http://graph.facebook.com/" + URLEncoder.encode(DataStorage.getFB_USER_ID(), "UTF-8") + "?fields=" + URLEncoder.encode("picture", "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
LogUtil.log(TAG, "getProfilePicture final url is : "+stringURL);
JSONObject jsonObject = null;
String response = "";
try {
HttpGet get = new HttpGet(stringURL);
get.setHeader("Content-Type", "text/plain; charset=utf-8");
get.setHeader("Expect", "100-continue");
HttpResponse resp = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
resp = httpClient.execute(get);
} catch (Exception e) {
e.printStackTrace();
}
// get the response from the server and store it in result
DataInputStream dataIn = null;
try {
// dataIn = new DataInputStream(connection.getInputStream());
if (resp != null) {
dataIn = new DataInputStream((resp.getEntity().getContent()));
}
}catch (Exception e) {
e.printStackTrace();
}
if(dataIn != null){
String inputLine;
while ((inputLine = dataIn.readLine()) != null) {
response += inputLine;
}
if(Constant.DEBUG) Log.d(TAG,"final response is : "+response);
if(response != null && !(response.trim().equals(""))) {
jsonObject = new JSONObject(response);
}
dataIn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
String profilePicture = "";
try{
if(jsonObject != null){
JSONObject jsonPicture = jsonObject.getJSONObject("picture");
if(jsonPicture != null){
JSONObject jsonData = jsonPicture.getJSONObject("data");
if(jsonData != null){
profilePicture = jsonData.getString("url");
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
LogUtil.log(TAG, "user fb profile picture url is : "+profilePicture);
return profilePicture;
}
Tulsiram Rathod
I am Software engineer. Having great experience in android, with knowledge of Java, .Net, PHP, MySql. Server side knowledge has my plus point.
Updated on August 07, 2020Comments
-
Tulsiram Rathod almost 4 years
I used facebook 3.6 sdk . i want to get profile picture from graph user , last time i got image but now it returns null Bitmap.
I used following code
private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (session.isOpened()) { Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { try { URL imgUrl = new URL("http://graph.facebook.com/" + user.getId() + "/picture?type=large"); InputStream in = (InputStream) imgUrl.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(in); //Bitmap bitmap = BitmapFactory.decodeStream(imgUrl // tried this also //.openConnection().getInputStream()); } catch (Exception e) { e.printStackTrace(); } } } }).executeAsync(); } }
When i use direct link then it works.
imgUrl = new URL("https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2365-6/851558_160351450817973_1678868765_n.png");
i refered this also Graph API Reference
-
Tulsiram Rathod about 10 yearsagain bitmap returns null
-
Tulsiram Rathod about 10 yearsi tried and i get proper link .When i hit this link in browser then image loads, but Bitmap returns null through code
-
Tulsiram Rathod about 10 yearsfrom this url i get profile image , but this image quality is not good.
-
Yuvaraja about 10 years@TulsiramRathod Can you share the Image url.
-
Tulsiram Rathod about 10 yearspls check this m.ak.fbcdn.net/profile.ak/hprofile-ak-prn2/t5.0-1/…
-
Mushtaq Jameel over 9 yearsThanks for the reveal on the redirection.
-
theapache64 about 9 yearsi think by putting
&redirect=false
in the url prevent redirection,isn't ?