Get user profile picture by Id

后端 未结 15 2300
闹比i
闹比i 2020-11-27 10:08

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 nam

相关标签:
15条回答
  • 2020-11-27 10:36

    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

    0 讨论(0)
  • 2020-11-27 10:38

    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.
    0 讨论(0)
  • 2020-11-27 10:40

    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

    0 讨论(0)
  • 2020-11-27 10:43

    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.

    0 讨论(0)
  • 2020-11-27 10:43

    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

    0 讨论(0)
  • 2020-11-27 10:45

    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

    0 讨论(0)
提交回复
热议问题