Получить список друзей на Facebook в 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>
пользователь вошел в систему, но не может отобразить список друзей на Facebook.
Код работал до нового SDK. используя invitable_friends, прежде чем это были я / друзья.
кто-нибудь, пожалуйста, помогите.
а также есть ли способ кроме этого?
2 ответа
Вы должны попросить user_friends
в процессе авторизации:
FB.login(function(response) {
if (response.authResponse) {
window.location.reload();
}
}, {scope:'email,user_friends'});
Вам нужно это как для /me/friends
и для /me/invitable_friends
см. документы в Facebook: https://developers.facebook.com/docs/games/invitable-friends/v2.1
Хотя вы получите только друзей, которые используют приложение тоже с /me/friends
, См. Список изменений для получения дополнительной информации: https://developers.facebook.com/docs/apps/changelog
То, что CBroe прокомментировал в вашем вопросе, также очень важно. invitable_friends
только для игр на facebook.com.
Если ваше приложение общедоступно и в нем живут некоторые из друзей, которые используют приложение, вы можете получить их список.
Посмотрите, что указано в документации # reference-user_friends:
user_friends - Предоставляет доступ к списку друзей человека, которые также используют ваше приложение.
После этого вы сможете увидеть, что вы хотите.
FB.api('/me/friends', function(response){
console.log(response);
}, {scope: 'user_friends'});