Get user profile picture by Id
Asked Answered
A

16

135

I'm now working on a web application which is mostly based of facebook graph api. I hold some data about users - actually , the possible public data available - such as name and id. I also know that a profile picture is a part of the public data, and I wondered how I'll be able to get a direct link to a profile picture of a user only by using their id?

Apivorous answered 11/7, 2012 at 22:26 Comment(1)
A
312

http://graph.facebook.com/" + facebookId + "/picture?type=square For instance: http://graph.facebook.com/67563683055/picture?type=square

There are also more sizes besides "square". See the docs.

Update September 2020
As Facebook have updated their docs this method is not working anymore without a token. You need to append some kind of access_token. You can find further information and how to do it correctly in the fb docs to the graph api of user picture

Requirements Change This endpoint supports App-Scoped User IDs (ASID), User IDs (UID), and Page-Scoped User IDs (PSID). Currently you can query ASIDs and UIDs with no requirements. However, beginning October 24, 2020, an access token will be required for all UID-based queries. If you query a UID and thus must include a token:

use a User access token for Facebook Login authenticated requests
use a Page access token for page-scoped requests
use an App access token for server-side requests
use a Client access token for mobile or web client-side requests

Quote of fb docs

Ablation answered 11/7, 2012 at 22:31 Comment(15)
For anyone wanting the link to the docs: developers.facebook.com/docs/graph-api/reference/user/pictureNicely
Best to look at the docs because they have all the other options too. For example, if you want a large, square image (since the square default is small), you have to use https://graph.facebook.com/{facebookId}/picture?type=large&width=720&height=720.Atalie
is there a way to just query for the image url not the image itself? Would like to upload the image on the front-end not through the server if possibleDegust
use redirect=0 to get JSON description (incl. url) instead of image itselfLatinist
current alternatives to square are small, normal, album, large, square. and no it doesn't describe what they are - and yes they are all square!Noguchi
What if it is a private profile e.g. not accessible from public? It returns null?Willette
That link returns the cover photo not the profile picture, at least for my and some of my friends' accounts. What am I doing wrong? Edit: I was using the wrong fbidPotsherd
Update for September 2020: You need to pass some kind of token now to get the picture. More infos on fb docs: developers.facebook.com/docs/graph-api/reference/user/pictureMae
@Mae I read all facebook docs and couldn't find out how to get back the profile image, where do I need to attach this token? Funny thing, I see stack overflow didn't get the memo as well, my profile picture here is gone lol..Hoofbound
@Mae #64435413Hoofbound
Here is an an example of how I did it in PHP for Laravel: #64435413Mae
works great - anyone wondering how to get a facebook id can use this tool - findmyfbid.inBret
not working anymore even with access tokenAlternately
@Alternately Turned out that the FB account must "allow" the FB app first then you should be able to fetch the profile picture with FB app access tokenFarra
since the link doesn't lead anywhere now, is there another link or a new update on how to get the profile_pic or how to get the needed access token ? the response from the api always says I need a Page Access Token !!Thunder
S
129

You can use following urls to obtain different sizes of profile images. Please make sure to add Facebook id to url.

Large size photo https://graph.facebook.com/{facebookId}/picture?type=large

Medium size photo https://graph.facebook.com/{facebookId}/picture?type=normal

Small size photo https://graph.facebook.com/{facebookId}/picture?type=small

Square photo https://graph.facebook.com/{facebookId}/picture?type=square

Sydneysydnor answered 13/1, 2014 at 4:45 Comment(1)
This was how I was able to discover my own FacebookId: developers.facebook.com/tools/explorer/…Pip
B
41

To get largest size of the image

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720) 

or anything else you need as size. Based on experience, type=large is not the largest result you can obtain.

Brunette answered 16/1, 2014 at 12:59 Comment(2)
also can pass : graph.facebook.com{userID}?fields=picture.type(large) this is useful when you have something like this, String url = "graph.facebook.com/me?fields=id,name,email,picture.type(large) as mentioned in other answers you can replace large with normal,small,square...Naiad
Doesn;t this need an access token (nowadays)?Wasson
L
16

From the Graph API documentation.

  • /OBJECT_ID/picture returns a redirect to the object's picture (in this case the users)
  • /OBJECT_ID/?fields=picture returns the picture's URL

Examples:

<img src="https://graph.facebook.com/4/picture"/> uses a HTTP 301 redirect to Zuck's profile picture

https://graph.facebook.com/4?fields=picture returns the URL itself

Lobster answered 11/7, 2012 at 22:32 Comment(3)
Alas, it's no longer on the homepage of the Graph API docs, it's now here: developers.facebook.com/docs/graph-api/using-graph-apiLobster
NO, it's not on the frontpage of the Graph API documentation. You'd better avoid time-constraint statements on SO. You know.. things change quite fast those days...Meridethmeridian
and ironically your answer is much more useful with more relevant info than the graph api page anyway :-)Noguchi
K
15

This will be helpful link:

http://graph.facebook.com/893914824028397/picture?type=large&redirect=true&width=500&height=500

You can set height and width as you needed

893914824028397 is facebookid

Kex answered 20/4, 2016 at 7:43 Comment(0)
T
15

UPDATE September 2020

Facebook has new requirements change: an access token will be required for all UID-based queries

So you have to add your app access token to the url:

https://graph.facebook.com/{profile_id}/picture?type=large&access_token={app_access_token}

To get your app_access_token use the following url:

https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials

You find your-app-id and your-app-secret in the Basic Settings of your Facebook app in Facebook developers

Teagan answered 26/9, 2020 at 3:35 Comment(2)
Hey, is there some library for this in react yet? Seems like "react-avatar" package is not yet supporting thisRamsden
@Alternately Try to "allow" the FB app for the FB account that you are usingFarra
H
5

https://www.avatars.io/

It's an API that returns the profile image when given a username for a variety of social networks including Twitter, Facebook, Instagram, and gravatar. It has libraries for iOS, Android, Ruby, Node, PHP, Python, and JavaScript.

Hirai answered 17/5, 2017 at 16:42 Comment(2)
That really is fantastic! Just because SO likes links to be described in a bit more detail; it's an API that returns the profile image when given a username for a variety of social networks including Twitter, Facebook, Instagram, and gravatar. It has libraries for iOS, Android, Ruby, Node, PHP, Python, and JavaScript. An exceptional piece of software. It can be found on GitHub.Planarian
Looks like this service and the GitHub repo have been taken down ☹Coverup
E
4

you can get it with using this url : you will get the picture HD (max size)

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720)&redirect=false

don't forget redirect=false or it will return an error

Ecosystem answered 4/7, 2018 at 15:6 Comment(0)
H
2

Use url as:https://graph.facebook.com/user_id/picture?type=square in src of img tag. type may be small,large.

Hypogenous answered 18/7, 2012 at 9:21 Comment(0)
S
2

You can use AngularJs for this, Its two -way data binding feature will get solution with minimum effort and less code.

<div> <input type="text" name="" ng-model="fbid"><br/> <img src="https://graph.facebook.com/{{fbid}}/picture?type=normal"> </div>

I hope this answers your query.Note: You can use other library as well.

Sallysallyann answered 12/6, 2017 at 0:28 Comment(0)
R
2

Through the Javascript SDK (v2.12 - April, 2017) you can get the details of the picture request this way:

FB.api("/" + uid + "/picture?redirect=0", function (response) {
  console.log(response);

  // prints the following:
  //data: {
  //  height: 50
  //  is_silhouette: false
  //  url: "https://lookaside.facebook.com/platform/profilepic/?asid=…&height=50&width=50&ext=…&hash…"
  //  width: 50
  //}

  if (response && !response.error) {
    // change the src attribute of img elements
    [...document.getElementsByClassName('fb-user-img')].forEach(
      i => i.src = response.data.url
    );

    // OR redirect to the URL above
    location.assign(response.data.url);
  }
});

For getting the JSON response the parameter redirect with 0 (zero) as value is important since the request redirects to the image by default. You may still add other parameters in the same URL. Examples:

  • "/" + uid + "/picture?redirect=0&width=100&height=100": a 100x100 image will be returned;
  • "/" + uid + "/picture?redirect=0&type=large": a 200x200 image is returned. Other possible type values include: small, normal, album, and square.
Readus answered 17/4, 2018 at 16:11 Comment(0)
Q
2

As per the current latest Facebook API version 3.2, For users you can use this generic method for getting profile picture is https://graph.facebook.com/v3.2/{user-id}/picture?type=square you can visit documentation for user picture here. The possible values for type parameter in URL can be small, normal, album, large, square

For Groups and Pages, the profile picture is not available directly. You have to get them using access token. For Groups you have to use User Access Token and for Pages you can use both User Access Token and Page Access Token.

You can get Group's or Page's Profile Picture using the generic URL: https://graph.facebook.com/v3.2/{user-id}/picture?access_token={access-token}&type=square

I hope this is helpful for people who are looking for Page or Group Profile picture.

Quaver answered 20/2, 2019 at 14:58 Comment(1)
For most of the pages, I am getting the pages profile picture without access-token but for some pages it's returning a question mark image as response in below format. { "data": { "is_silhouette": true, "url": "static.xx.fbcdn.net/rsrc.php/v3/y6/r/_xS7LcbxKS4.gif" } } Any Clue ?Certitude
L
1

Simply Follow as below URL

https://graph.facebook.com/facebook_user_id/picture?type=square

type may be normal,small,medium,large. Or square (f you want to get square picture, the square size is limited to 50x50).

Lithography answered 29/10, 2018 at 5:31 Comment(2)
If you want to get square picture.The square size is limited to 50x50.Lithography
For more detail follow Facebook Graph API developers.facebook.com/docs/graph-api/reference/v3.2/user/…Lithography
T
1

today I found a problem, the profile images was returning the default profile picture because a new requirement from Facebook to all the UID based queries, so just add &access_token=[apptoken] to the url, you can obtain your app token from here

Tribunate answered 22/9, 2020 at 12:51 Comment(0)
F
1

Update July 2021

On top of answer by @EddyG, turned out that if you still not able to fetch the profile picture with app access token, the FB account must "allow" the FB app first then you should be able to fetch the profile picture with FB app access token.

Farra answered 2/7, 2021 at 3:30 Comment(0)
S
0

You can use the following endpoint to get the image.jfif instead of jpg:

https://graph.facebook.com/v3.2/{user-id}/picture

Note that you won't be able to see the image, only download it.

Sunbathe answered 19/7, 2020 at 7:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.