Reputation: 39
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
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
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