How to use FB.api('/me/picture') to get profile image

后端 未结 5 1204
你的背包
你的背包 2020-12-29 14:43

This is a very silly question. I\'m a beginner with facebook Javascript SDK. So I\'m trying to make a the user\'s profile image to show I used this code

FB.         


        
相关标签:
5条回答
  • 2020-12-29 14:59

    /me/picture (or /{user id}/picture) returns an HTTP 301 redirect to the image location so you can embed it directly into an <img src...

    If you want to retrieve the URL and use it yourself you need to specifically request it as a field, via :

     /{user id}?fields=picture
    

    or

     /me/?fields=picture
    

    You can include other fields too, but I'm assuming you just want the photo right now.

    0 讨论(0)
  • 2020-12-29 14:59

    I get the Facebook profile picture All sizes

    Profile Picture Sizes

    value = 24 32 40 50 60 74 80 86 100 111 120 130 148 160 200 240 320 480 720 960 1440

    CURL

    https://graph.facebook.com/v3.1/me?fields=picture.width(value).height(2000)&access_token={}
    
    0 讨论(0)
  • 2020-12-29 15:00

    This is sure shot, Proved to be working with facebook graph api 2.5. This is the sample HTML Please see the changes I have made in FB.api() function.

     <!DOCTYPE html>
        <html>
        <head>
        <title>Facebook Login JavaScript Example</title>
        <meta charset="UTF-8">
        </head>
        <body>
    
        <!--
          Below we include the Login Button social plugin. This button uses
          the JavaScript SDK to present a graphical Login button that triggers
          the FB.login() function when clicked.
        -->
        <img src="" id="profileImage"/>
    
        <div id="status">
        </div>
    
        </body>
        <script>
    
            // This is called with the results from from FB.getLoginStatus().
            function statusChangeCallback(response) {
                console.log('statusChangeCallback');
                console.log(response);
                // The response object is returned with a status field that lets the
                // app know the current login status of the person.
                // Full docs on the response object can be found in the documentation
                // for FB.getLoginStatus().
                if (response.status === 'connected') {
                    // Logged into your app and Facebook.
                    testAPI();
                } else if (response.status === 'not_authorized') {
                    // The person is logged into Facebook, but not your app.
                    document.getElementById('status').innerHTML = 'Please log ' +
                            'into this app.';
                } else {
                    // The person is not logged into Facebook, so we're not sure if
                    // they are logged into this app or not.
                    document.getElementById('status').innerHTML = 'Please log ' +
                            'into Facebook.';
                }
            }
    
            // This function is called when someone finishes with the Login
            // Button.  See the onlogin handler attached to it in the sample
            // code below.
            function checkLoginState() {
                FB.getLoginStatus(function(response) {
                    statusChangeCallback(response);
                });
            }
    
            window.fbAsyncInit = function() {
                FB.init({
                    appId      : 'XXXXXXXXXXXX',
                    cookie     : true,  // enable cookies to allow the server to access
                                        // the session
                    xfbml      : true,  // parse social plugins on this page
                    version    : 'v2.5' // use graph api version 2.5
                });
    
                // Now that we've initialized the JavaScript SDK, we call
                //FB.getLoginStatus().  This function gets the state of the
                // person visiting this page and can return one of three states to
                // the callback you provide.  They can be:
                //
                // 1. Logged into your app ('connected')
                // 2. Logged into Facebook, but not your app ('not_authorized')
                // 3. Not logged into Facebook and can't tell if they are logged into
                //    your app or not.
                //
                // These three cases are handled in the callback function.
    
                FB.getLoginStatus(function(response) {
                    statusChangeCallback(response);
                });
    
            };
    
            // Load the SDK asynchronously
            (function(d, s, id) {
                var js, fjs = d.getElementsByTagName(s)[0];
                if (d.getElementById(id)) return;
                js = d.createElement(s); js.id = id;
                js.src = "//connect.facebook.net/en_US/sdk.js";
                fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));
    
            // Here we run a very simple test of the Graph API after login is
            // successful.  See statusChangeCallback() for when this call is made.
            function testAPI() {
                console.log('Welcome!  Fetching your information.... ');
                FB.api('/me', function(response) {
                    console.log('Successful login for: ' + response.name);
                    console.log('Successful login for: ' + response.id);
                    console.log('Successful login for: ' + response.email);
                    var im = document.getElementById("profileImage").setAttribute("src", "http://graph.facebook.com/" + response.id + "/picture?type=normal");
                    document.getElementById('username').innerHTML =response.name;
                });
            }
    
        </script>
        </html>
    
    0 讨论(0)
  • 2020-12-29 15:04

    You can get specific sizes of the profile pic as well:

    FB.api("/me/picture?width=180&height=180",  function(response) {
    
            console.log(response.data.url);
    
    });  
    

    See the Facebook documentation to see what different picture sizes you can get.

    And a complete demo with login at: Get Facebook Profile Picture with Javascript SDK

    0 讨论(0)
  • 2020-12-29 15:13

    FB.api('/me/picture') will return a redirect to the image URL, so it'll be of no use for you:
    alt text
    The way you are using is valid as mentioned in the documentation (Reading section). Maybe this is related but I don't know if it's totally valid or not.

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