Как получить друзей нравится через Facebook API

Можно ли получить все мои друзья? Теперь я получаю это с помощью двух шагов:

  • Получение списка всех моих друзей
  • Повторяя этот список, я получаю всех людей, которым нравится,

но это кажется очень большим процессом, у кого-нибудь есть идея улучшить производительность для этой задачи?

Ответы

Ответ 1

Наконец-то я нашел его через 2 недели, посмотрев документацию по API Facebook

FB.api("/likes?ids=533856945,841978743")

FB.api("me/friends",{
  fields:'id',
  limit:10
},function(res){
  var l=''
  $.each(res.data,function(idx,val){
     l=l+val.id+(idx<res.data.length-1?',':'')
  })
  FB.api("likes?ids="+l,function(res){
      console.log(res);
  })
})

Ответ 2

Использование FQL будет быстрее, чем цикл через результаты Graph API. Вы можете получить идентификатор страниц, которым нравятся ваши друзья, но, к сожалению, FQL не возвращает информацию, отличную от этого (то есть имя). Взгляните на следующее.

Предполагается, что вы используете PHP SDK с разрешением friends_likes.

// hold on to your user ID
$user_id = $facebook->getUser();

// query your friend likes based on their ID
$query = "SELECT uid, page_id FROM page_fan WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $user_id)";
$result = $fb->api(array(
  'method' => 'fql.query',
  'query' => $query,
));

// optionally group the results by each friend ID
function arraySort($input, $sortkey){
  foreach ($input as $key => $val) {
    $output[ $val [ $sortkey ] ][] = $val;
  }
  return $output;
}
$friendLikes = arraySort($result,'uid');

// output the results
echo sprintf('<pre>%s</pre>', print_r($friendLikes,TRUE));

Преимущество этого в том, что вы делаете только один вызов API. Вам нужно будет сделать отдельные звонки, чтобы получить имена друзей и другое для любимых деталей страницы, но у вас есть идентификаторы, с которыми можно работать сейчас прямолинейно.

Ответ 3

Я считаю, что это единственный способ. Я посмотрел на эту проблему несколько недель назад. Не думайте, что они изменили API.

http://developers.facebook.com/docs/reference/api/

EDIT: Я не уверен, что хорошо понимаю, что вы имеете в виду... Если вы хотите, чтобы вы получили список сообщений, которые нравятся пользователям, вам нужно сделать следующее:

  • Получить все сообщения от друзей
  • Проверьте, нравится ли им какое-либо сообщение.
  • Получить все сообщения
  • Проверьте, нравится ли ему какое-либо из его/ее собственных сообщений.
  • Объедините результаты

Это то, что вы хотите?