Как отслеживать кнопки Like, Tweet, Мне нравится в социальных сетях

В прошлой статье о том как узнать количество твитов в Twitter, лайков и share в facebook, ВКонтакте, Одноклассниках, Google+ на PHP я сказал, что была необходимость выводить суммарное число лайков трёх соц. сетей. Помимо этого необходимо было, чтобы в случае, если человек лайкнет/дизлайкнет страницу, число изменилось. То есть, нобходимо отслеживать кнопки Like, Tweet, Мне нравится в социальных сетях.

Если покопаться в документации соответствующей соц. сети, то можно найти информацию о том, как подписаться на события кнопок. Решил выложить тут рабочий вариант, если кому-то лень копаться, да и себе на будущее.

Естественно, сначала надо инициализировать сие дело.

//для VK
<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?49"></script>
<script type="text/javascript">
VK.init({ apiId: идентификатор_приложения, onlyWidgets: true });
</script>

//для FB
<script src="//connect.facebook.net/en_US/all.js"></script>

//Twitter
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>

Ну и потом, собственно, подписаться на сами события.


//для VK
VK.Observer.subscribe('widgets.like.unliked', function(likeCount) {
// если убрали нажатие с кнопки "мне нравится"
});
 VK.Observer.subscribe('widgets.like.liked', function(likeCount) {
// если нажали на кнопку  "мне нравится"
});

//можно отписаться
VK.Observer.unsubscribe('widgets.like.unliked');
VK.Observer.unsubscribe('widgets.like.liked');



//для FB
//opt_pagePath адрес страницы
FB.Event.subscribe('edge.create', function(opt_target) {
//если нажали на кнопку  "рекомендовать"
});
FB.Event.subscribe('edge.remove', function(opt_target) {
// если убрали нажатие с кнопки "рекомендовать"
});

//можно отписаться
FB.Event.unsubscribe('edge.create');
FB.Event.unsubscribe('edge.remove');



//для Twitter
trackTwitterHandler_ = function(intent_event) {
  var opt_target; 
  if (intent_event && intent_event.type == 'tweet' || intent_event.type == 'click') {
    var socialAction = intent_event.type + ((intent_event.type == 'click') ? '-' + intent_event.region : ''); //тип нажатия
    //ну, как пример, проверка на то, твиттнули ли
    if(socialAction =='tweet')
    {
      //если в модальном окне нажали "твиттнуть", то можно тут обработать  
    }
    //аналогично можно обрабатывать нажатие по числу твиттов и т.д.
  }
};

intent_handler = function(intent_event) {
   trackTwitterHandler_(intent_event);
};
	
twttr.events.bind('click', intent_handler);
twttr.events.bind('tweet', intent_handler);


//можно отписаться
twttr.events.unbind('click');
twttr.events.unbind('tweet');

Можно и для других соц. сетей такое сделать, я думаю. Для mail.ru, чтобы отследить событие mailru.app.events.like используется, вроде как, mailru.events.listen.

  Категории: JavaScript, Соц. сети