
Как узнать количество like и share в социальных сетях
В посте приведены куски кода, позволяющие узнать количество лайков в facebook'e и вконтакте, количество твитов и нажатий кнопки google +1. Они используются для подсчета рейтинга репетиторов на сайте бесплатного подбора репетитора http://uralteacher.ru.
1. Код для вставки кнопки для голосований ВКонтакте:
<div id="vk_like"></div> <script type="text/javascript"> VK.Widgets.Like("vk_like", {type: "button"}, "[id страницы]"); </script>
Код, позволяющий узнать количество голосов:
VK.Share = {}; VK.Share.count = function(index, count){ if(count) $.getJSON('...?rating=vk&ratingvalue=' + count); }; $.getJSON('http://vkontakte.ru/share.php?act=count&index=1&url=' + pageuri + '&format=json&callback=?');
Значение, которое возвращает ВКонтакте программно часто различается от того, что он показывает на кнопке. Бывает показывает 0, а программно стабильно отвечает, что есть 3 голоса. Бывает, что на кнопке 11 голосов, а программно возвращает один. Есть версия, что во втором случае показываются только голоса, которые нажали галочку "Рассказать друзьям". А от куда берутся несуществующие голоса - не понятно. Если кто-то знает решение, пожалуйста, пишите в комментарии.
С остальными социальными сетями все проще.
2. Код для вставки кнопки facebook:
<iframe src="http://www.facebook.com/plugins/like.php?app_id=231505923542544&href=[url страницы]&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:150px; height:21px;" allowTransparency="true"></iframe>
Количество лайков в facebook'e:
$.getJSON('http://api.facebook.com/restserver.php?method=links.getStats&callback=?&urls=' + pageuri + '&format=json', function(data) { rating_fb=data[0].like_count+data[0].share_count; if(rating_fb) $.getJSON('...?&rating=fb&ratingvalue=' + rating_fb); });
3. Кнопка twitter:
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="uralteacher_ru">Голосовать</a> <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
Узнать количество твитов:
$.getJSON('http://urls.api.twitter.com/1/urls/count.json?url=' + pageuri + '&callback=?', function(data) { if(data.count) $.getJSON('...?rating=tv&ratingvalue=' + data.count); });
4. Кнопка Google +1:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"> {lang: 'ru'} </script> <div><g:plusone callback="countgoogle"></g:plusone></div>
Узнать количество нажатий на кнопку нельзя, то можно обрабатывать событие нажатия +1, и отмену нажатия:
function countgoogle(obj){ if(obj.state){ //+1 $.getJSON('...?rating=g&ratingvalue=1'); }else{ // отмена нажатия $.getJSON('...?rating=g&ratingvalue=-1'); } }