Vinay
Vinay

Reputation: 39

Get facebook friends list in js api

I am getting user info but unable to get friend list.    

<script>
    function sortMethod(a, b) {
        var x = a.name.toLowerCase();
        var y = b.name.toLowerCase();
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    }

    window.fbAsyncInit = function() {
        FB.init({ appId: 'xxxxxxxxx', 
            status: true, 
            cookie: true,
            xfbml: true,
            oauth: true
        });

        function updateButton(response) {
            var button = document.getElementById('fb-auth');

            if (response.authResponse) { // in case if we are logged in
                var userInfo = document.getElementById('user-info');
                FB.api('/me', function(response) {
                    userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture">' + response.name;
                    button.innerHTML = 'Logout';
                });

                // get friends
                FB.api('/me/invitable_friends', function(response) {
                    var result_holder = document.getElementById('result_friends');
                    var friend_data = response.data.sort(sortMethod);

                    var results = '';
                    for (var i = 0; i < friend_data.length; i++) {
                        results += '<div><img src="https://graph.facebook.com/' + friend_data[i].id + '/picture">' + friend_data[i].name + '</div>';
                    }

                    // and display them at our holder element
                    result_holder.innerHTML = '<h2>Result list of your friends:</h2>' + results;
                });

                button.onclick = function() {
                    FB.logout(function(response) {
                        window.location.reload();
                    });
                };
            } else { // otherwise - dispay login button
                button.onclick = function() {
                    FB.login(function(response) {
                        if (response.authResponse) {
                            window.location.reload();
                        }
                    }, {scope:'email'});
                }
            }
        }

        // run once with current status and whenever the status changes
        FB.getLoginStatus(updateButton);
        FB.Event.subscribe('auth.statusChange', updateButton);    
    };

    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
    </script>

user getting logged in but Unable to display facebook friends list.

Code was working before new sdk. using invitable_friends before it was me/friends.

anyone please help.

and also is there any way besides this ?

Upvotes: 3

Views: 14066

Answers (2)

Murad Hasan
Murad Hasan

Reputation: 9583

If your app is public and live also some of the friends who are using the app then you can get the list of them.

See what the documentation state #reference-user_friends:

user_friends - Provides access to a person's list of friends that also use your app.

After that you will be able to see what you want.

FB.api('/me/friends', function(response){
    console.log(response);
}, {scope: 'user_friends'});

Upvotes: 0

andyrandy
andyrandy

Reputation: 73984

You need to ask for user_friends in the authorization process:

FB.login(function(response) {
    if (response.authResponse) {
        window.location.reload();
    }
}, {scope:'email,user_friends'});

You need this both for /me/friends and for /me/invitable_friends, see Facebook docs: https://developers.facebook.com/docs/games/invitable-friends/v2.1

Although you will only get friends who are using the App too with /me/friends. See changelog for more information: https://developers.facebook.com/docs/apps/changelog

What CBroe commented in your question is very important too. invitable_friends is for Games on facebook.com only.

Upvotes: 3

Related Questions