Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!

Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение Александр » 25 май 2011, 10:55

Количество и список пользователей, кликнувших по «Мне нравится» (likes.getList)
PHP, JavaScript

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

Изображение

likes.getList
Получает список идентификаторов пользователей, которые добавили заданный объект в свой список Мне нравится.
Данный метод может быть вызван без использования авторизационных данных (параметры session или access_token).

Параметры

type - тип Like-объекта. Подробнее о типах объектов можно узнать ниже.

owner_id - идентификатор владельца Like-объекта (id пользователя или id приложения). Если параметр type равен sitepage, то в качестве owner_id необходимо передавать id приложения. Если параметр не задан, то считается, что он равен либо идентификатору текущего пользователя, либо идентификатору текущего приложения (если type равен sitepage).

item_id - идентификатор Like-объекта. Если type равен sitepage, то параметр item_id может содержать значение параметра page_id, используемый при инициализации виджета «Мне нравится».

page_url - url страницы, на которой установлен виджет виджета «Мне нравится». Используется вместо параметра item_id.

friends_only - указывает, необходимо ли возвращать только пользователей, которые являются друзьями текущего пользователя. Параметр может принимать следующие значения:
0 – возвращать всех пользователей в порядке убывания времени добавления объекта
1 – возвращать только друзей текущего пользователя в порядке убывания времени добавления объекта
Если метод был вызван без авторизации или параметр не был задан, то считается, что он равен 0.

offset - смещение, относительно начала списка, для выборки определенного подмножества. Если параметр не задан, то считается, что он равен 0.

count - количество возвращаемых идентификаторов пользователей.
Если параметр не задан, то считается, что он равен 100, если не задан параметр friends_only, в противном случае 10.
Максимальное значение параметра 1000, если не задан параметр friends_only, в противном случае 100.



Список типов Like-объектов

На данный момент в API поддерживается работа со следующими типами Like-объектов, которые используются на основном сайте:

post - запись на стене пользователя или группы.
photo - фотография
audio - аудиозапись
video - видеозапись
sitepage - страница сайта, на котором установлен виджет «Мне нравится»

https://vk.com/developers.php?o=-1 ... A%F2%EE%E2


Способ 1
Этот способ подходит, если вам нужно узнать количество лайком у большого количества объектов.

Метод likes.getList может быть вызван без использования авторизационных данных (параметры session или access_token).

Воспользуемся способом вызова методов ВКонтакте API, описанным здесь https://vk.com/developers.php?oid=-1&p=% ... %D0%BA_API

Код будет такой:
  1. $res = file_get_contents('https://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485');
  2. $resp = json_decode($res, true);
  3.    
  4. echo 'Количество лайков: '.$resp['response']['count'];

Этот код можно вызывать в цикле. Ограничений в 3 запроса в секунду на сервере API при таком обращении к методу нет.
Ограничение может быть на вашем хостинге - на время выполнения скрипта.

При большом количестве объектов, будет много обращений к API, которые могут занимать много времени. Рекомендую хранить количество лайков в базе данных, которую следует обновлять через какой-то промежуток времени, запустив скрипт с обращением к API. Скрипт запускать по крону.

Так же можно сразу обновлять базу, но не по всем объектам сразу, а только по одному конкретному.
Для этого прочтите документацию по виджету «Мне нравится» https://vk.com/pages?oid=-1&p=%D0%94%D0% ... 1%81%D1%8F

При нажатии на кнопку "Мне нравится" виджет передаёт события widgets.like.liked и widgets.like.unliked используя VK.Observer. В функцию-обработчик будут переданы один параметр - количество отметок "Мне нравится" у текущей страницы.

На странице с «Мне нравится» добавляем такой код
  1.     VK.Observer.subscribe('widgets.like.liked',function(){
  2.         update_likes();
  3.     });
  4.     VK.Observer.subscribe('widgets.like.unliked',function(){
  5.         update_likes();
  6.     });
  7.  
  8.     function update_likes() {
  9.         // нужно передать какой-то параметр, по которому в скрипте likes.php определить, информацию по какому объекту нужно обновить в базе.
  10.         $.post('https://flapps.ru/vk-gifts/likes.php', {"gift_id": 485});
  11.     }




Способ 2
У этого способа есть ограничение - 3 запроса в секунду.
Этот способ можно использовать, например, если вам нужно узнать количество лайком у небольшого количества объектов. На практике использовать этот способ с методом likes.getList не имеет смысла. Достаточно использовать первый способ.

Файл vkapi.class.php - это официальный класс для вызова серверных методов (PHP).
Скачать его можно здесь https://vk.com/source/APIServerPHPClass.zip
vkapi.class.php нужно положить в папку с созданным php скриптом.

  1. <?
  2. /*
  3.  
  4.     https://flapps.ru/forum/ - форум о создании приложений
  5.  
  6. */
  7. require 'vkapi.class.php';
  8.  
  9. $api_id = '1942958';
  10. $secret_key = 'qweRtyuiop12asdFghjk';
  11.  
  12. $VK = new vkapi($api_id, $secret_key);
  13. $resp = $VK->api('likes.getList', array('type'=>'sitepage', 'owner_id'=>1942958, 'page_url'=>'https://flapps.ru/forum/'));
  14. // print_r($resp); // раскомментировать эту строку, чтобы увидеть ответ от сервера
  15.  
  16.  
  17. // сервер вернёт количество лайков (count) и список id пользователей, которые кликнули по Мне нравится
  18.  
  19. // выводим количество
  20. echo 'Количество лайков: '.$resp['response']['count'].'<br /><br />';
  21.  
  22. // первые 2 пользователя
  23. echo 'Первые 2 пользователя: '.$resp['response']['users'][0].', '.$resp['response']['users'][1].'<br /><br />';
  24.  
  25. echo 'Все пользователи: <br />';
  26. $users_count = sizeOf($resp['response']['users']);
  27. for($i=0;$i<$users_count;$i++){
  28.     echo $resp['response']['users'][$i].'<br />';
  29. }
  30. ?>



Это один из вариантов работы с методом likes.getList.
Если вы указывали page_id в своём виджете, то получить информацию можно по этому параметру, поставив его значение в item_id
Если вы используете api_id тот же самый, что и api_id при инициализации виджета, то указывать параметр owner_id не обязательно.
Чтобы узнать количество и список друзей пользователя, нужно использовать параметр friends_only. При этом пользователю нужно пройти авторизацию (параметры session или access_token).

Читайте более подробное описание в официальной документации https://vk.com/developers.php?o=-1&p=likes.getList

За это сообщение автора Александр поблагодарили - 2:
Saldanet, ukhov
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение Saldanet » 08 авг 2011, 05:50

Здравствуйте. Я тут новенький и, наверное, чего-то не понимаю, но данный метод возвращает только id юзеров? А как добиться того, чтобы возвращалось имя, фамилия, а вместе с ними и ссылка на профайл пользователя? Заранее спасибо за ответ.
Saldanet

 
Сообщения: 2
Зарегистрирован: 08 авг 2011, 05:45
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение bodnar » 08 авг 2011, 15:53

применить метод getProfiles
Обязательно к прочтению: ActionScript 3.0 Ошибки среды выполнения
Аватара пользователя
bodnar
Модератор
Модератор
 
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41
Благодарил (а): 16 раз.
Поблагодарили: 185 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение Saldanet » 08 авг 2011, 17:11

Но с ним же ссылка не выйдет или я что-то путаю?
Saldanet

 
Сообщения: 2
Зарегистрирован: 08 авг 2011, 05:45
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение bodnar » 08 авг 2011, 17:48

какая ссылка? ты знаешь id пользователя, составить строку http://vkontakte.ru/id12345 когда 12345 ты знаешь сложно?
Обязательно к прочтению: ActionScript 3.0 Ошибки среды выполнения
Аватара пользователя
bodnar
Модератор
Модератор
 
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41
Благодарил (а): 16 раз.
Поблагодарили: 185 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение KonstantinGreat » 09 дек 2011, 13:30

использую данный код, но ничего не выводится, поля массивов пустые:( может кто подскажет, что делать
KonstantinGreat

 
Сообщения: 3
Зарегистрирован: 09 дек 2011, 13:25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение Александр » 09 дек 2011, 20:37

KonstantinGreat
Убедись что верно передаешь все параметры.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение KonstantinGreat » 11 дек 2011, 01:05

Александр
подключил сайт через http://vkontakte.ru/ (выставил галочку как приложение, а не как игра), поставил виджет 'Мне нравится' на страницу, использую код данной темы и файл для класса(предложенный тут же). But Nothing is working :( .
листинг страницы, которая находится на запрашиваемом url:

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?45"></script>
  4. <script type="text/javascript">
  5.   VK.init({apiId: 2713129, onlyWidgets: true});
  6. </script>
  7. </head>
  8. <body >
  9.  
  10. <div id="vk_like"></div>
  11. <script type="text/javascript">
  12. VK.Widgets.Like("vk_like", {type: "full"});
  13. </script>
  14. <?
  15. require 'vkapi.class.php';
  16.  
  17. $api_id = '2713129';
  18. $secret_key = 'hDziuj76u29Kj2oOCoKX';
  19.  
  20. $VK = new vkapi($api_id, $secret_key);
  21. $resp = $VK->api('likes.getList', array('type'=>'sitepage', 'owner_id'=>2713129, 'page_url'=>'http://likeyou.9pn.ru/'));
  22.  
  23. echo 'Number of likes: '.$resp['response']['count'].'<br /><br />';
  24. if($resp['response']['count']==NULL)
  25.     echo "no likes".'<br />';
  26. echo 'users: '.$resp['response']['users'].'<br />';
  27. if($resp['response']['users']==NULL)
  28.     echo 'fuck off with users';
  29. ?>
  30. </body>
  31. </html>


очень надо считать эти клики в другом месте, надеюсь на помощь, или посоветуйте как воспользоваться запросами через JS в стиле VK.Api.call(), только не отправляйте на 3 буквы и на сайт вконтакте для ознакомления с мануалами, заранее благодарен
KonstantinGreat

 
Сообщения: 3
Зарегистрирован: 09 дек 2011, 13:25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение Александр » 11 дек 2011, 15:05

KonstantinGreat
Вот эту строчку напиши
  1. print_r($resp); // раскомментировать эту строку, чтобы увидеть ответ от сервера

Что выводит?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Пользователи, кликнувшие по «Мне нравится» (likes.getList)

Сообщение KonstantinGreat » 11 дек 2011, 16:31

Александр
пишет 1ку, причем в предложенном вами синтаксисе ничего не пишет, а вот в таком

пишет.
KonstantinGreat

 
Сообщения: 3
Зарегистрирован: 09 дек 2011, 13:25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Уроки по использованию ВКонтакте API



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0