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

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

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

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


person maxgrinev    schedule 24.01.2011    source источник


Ответы (3)


Наконец я нашел его через 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);
  })
})
person dupdup    schedule 16.03.2011
comment
при чем здесь ФБ. мне нужно то же самое для андроида. - person Vivek Ravi; 22.04.2014
comment
FB — это javascript SDK для Facebook. Страница SDK находится здесь. - person Jon Ruddell; 17.07.2014
comment
Это все еще работает с новым fb graph api? Я не получаю никаких данных, если я передаю идентификатор. - person РАВИ; 31.07.2015

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

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

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

// query your friend's 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. Вам нужно будет сделать отдельные вызовы, чтобы получить имена друзей, и еще один для получения сведений о понравившейся странице, но теперь у вас есть идентификаторы, с которыми можно работать в прямом подходе.

person Carson    schedule 12.06.2012

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

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

РЕДАКТИРОВАТЬ: я не уверен, что достаточно хорошо понимаю, что вы имеете в виду... Если вы имеете в виду, что хотите получить список сообщений, которые нравятся пользователю, вам нужно сделать следующее:

  1. Получить все посты друзей
  2. Проверьте, нравится ли какой-либо из их постов
  3. Получить все сообщения от
  4. Проверьте, нравится ли какой-либо из его/ее собственных постов
  5. Объедините результаты

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

person Enrico Susatyo    schedule 26.01.2011
comment
Спасибо за ответ. Но на самом деле я не могу реализовать даже так! Как я могу получить посты, которые понравились пользователю? Я не могу найти способ сделать это. Есть только лайки в developers.facebook.com/docs/reference/api/user но это страницы, которые нравятся пользователю, а не посты. - person maxgrinev; 27.01.2011
comment
Я не могу поверить, что есть более эффективный способ сделать это. Я только что много играл с FQL, и, исходя из моего уровня знаний, я считаю, что действительно нужно сначала получить список друзей, а затем сделать дополнительные лайки для каждого из друзей. Это может быть очень долгий процесс. Это действительно единственный способ? - person Sven Haiges; 02.01.2012
comment
@Sven Некоторое время назад я решал аналогичную проблему (заголовок stackoverflow.com/questions/4874014/), и кажется, что никто не знает ответа. Я думаю, если это не задокументировано, мы должны просто предположить, что его там нет. - person Enrico Susatyo; 03.01.2012
comment
Спасибо. Я буду думать об этом в ближайшие часы. Одна идея, которую я имею, состоит в том, чтобы сначала получить все идентификаторы друзей. Потом с помощью мультизапроса попробую набрать лайки. Если это сработает, я дам всем знать. - person Sven Haiges; 03.01.2012