Отловить добавление комментария через виджет "Комментарии"
Отловить добавление комментария через виджет "Комментарии"
Привет!
У нас на сайте (доска объявлений) можно оставлять комментарии через виджет ВКонтакта "Комментарии". Например, вот: http://murom.jazi.ru/ru/transport/cars/ ... ied/66230/. Я хочу чтобы автор объявления получал уведомление о том, что его объявление откомментили. Я бы мог отправлять ему письмо, или слать сообщение ВКонтакте, если бы он при публикации залогинился ВКонтакт-аккаунтом. Но вот проблема в том, что я не знаю, как мне самому получить уведомление о том, что получен комментарий. Это как-то возможно сделать?
Спасибо.
У нас на сайте (доска объявлений) можно оставлять комментарии через виджет ВКонтакта "Комментарии". Например, вот: http://murom.jazi.ru/ru/transport/cars/ ... ied/66230/. Я хочу чтобы автор объявления получал уведомление о том, что его объявление откомментили. Я бы мог отправлять ему письмо, или слать сообщение ВКонтакте, если бы он при публикации залогинился ВКонтакт-аккаунтом. Но вот проблема в том, что я не знаю, как мне самому получить уведомление о том, что получен комментарий. Это как-то возможно сделать?
Спасибо.
Re: Отловить добавление комментария через виджет "Комментарии"
http://vkontakte.ru/developers.php?o=-1 ... 0%E8%E5%E2onChange: коллбек-функция, вызываемая при публикации или удалении комментария первого уровня.
События для отлова комментария второго уровня нет.
Re: Отловить добавление комментария через виджет "Комментарии"
О, там даже с солёным хешем для защиты от спама. Спасибо, это то что нужно!Александр писал(а):http://vkontakte.ru/developers.php?o=-1 ... 0%E8%E5%E2onChange: коллбек-функция, вызываемая при публикации или удалении комментария первого уровня.
События для отлова комментария второго уровня нет.
Re: Отловить добавление комментария через виджет "Комментарии"
Привет!
Возникла проблема - у меня не сходятся хеши Из документации:
Делал дампы, убеждался, что данные доходят верно. Еще думал что фигня с кодировкой, но оказалось мимо - простой камент "1" не проходит. Сверял код приложения - все сходится. Защищенный ключ взял там, где и говорится в документации, но хеши $sign и $md5 не сходятся! Натолкните на мысль, пожалуйста.
Возникла проблема - у меня не сходятся хеши Из документации:
Мой код на стороне сервера:sign - контрольная сумма md5 от конкатенации 4х строк: api_secret, date, num, last_comment. В языке php может быть получена с помощью md5($api_secret.$date.$num.$last_comment).
Код: Выделить всё
function utf8_urldecode($str){ $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;", urldecode($str)); return html_entity_decode($str, null, 'UTF-8');} $num = $_POST['num'];$last_comment = utf8_urldecode($_POST['last_comment']);$date = $_POST['date'];$sign = $_POST['sign'];$api_secret = 'xxxxxxxxxxxxxxxxxxxx';$md5 = md5($api_secret . $date . $num . $last_comment);
Re: Отловить добавление комментария через виджет "Комментарии"
dennis
А если не делать utf8_urldecode ?
А если не делать utf8_urldecode ?
Re: Отловить добавление комментария через виджет "Комментарии"
Не, все тоже самое Вот, на всякий случай JS-часть:Александр писал(а):dennis
А если не делать utf8_urldecode ?
Код: Выделить всё
VK.init({apiId: 2268273, onlyWidgets: true}); VK.Widgets.Comments("vk_comments", {limit: 20, width: 600, attach: "*", onChange: VKComment}); function ajax(){ if(window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); }} function VKComment(num, last_comment, date, sign){ var request = ajax(); var param = 'num=' + escape(num) + '&last_comment=' + escape(last_comment) + '&date=' + escape(date) + '&sign=' + escape(sign) + '&url=' + escape(window.location); request.open('POST', '/vkontakte/comment/', false); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); request.setRequestHeader('Content-Length', param.length); request.send(param);}
Re: Отловить добавление комментария через виджет "Комментарии"
PHP скрипт в UTF-8? Тогда сделай:
escape делать обязательно?
Сделай
и
Данные абсолютно одинаковы?
Код: Выделить всё
$last_comment=iconv("utf-8", "windows-1251", $_POST['last_comment']);
Сделай
Код: Выделить всё
alert(param);
Код: Выделить всё
echo $date.' '.$num.' '.$last_comment;
Re: Отловить добавление комментария через виджет "Комментарии"
Еее, все заработало
escape делать надо, т.к. параметры нужно эскейпить (а при передаче в php они будут прозрачно разэскейпиваться). Ошибка была в том, что для эскейпивания в js надо использовать не escape, а encodeURIComponent. escape это немного другое, она не симметрична PHP urldecode. И конвертить в windows-1251 тоже надо.
Итого: параметры в аяксе заворачиваем в encodeURIComponent, указываем request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'), в PHP из $_POST все вынимаем как есть, за исключением текста комента. Комент вынимаем как iconv('utf-8', 'windows-1251', $_POST['last_comment']). Все, можно считать и сравнивать хеши
escape делать надо, т.к. параметры нужно эскейпить (а при передаче в php они будут прозрачно разэскейпиваться). Ошибка была в том, что для эскейпивания в js надо использовать не escape, а encodeURIComponent. escape это немного другое, она не симметрична PHP urldecode. И конвертить в windows-1251 тоже надо.
Итого: параметры в аяксе заворачиваем в encodeURIComponent, указываем request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'), в PHP из $_POST все вынимаем как есть, за исключением текста комента. Комент вынимаем как iconv('utf-8', 'windows-1251', $_POST['last_comment']). Все, можно считать и сравнивать хеши
Re: Отловить добавление комментария через виджет "Комментарии"
Подскажите ещё пожалуйста, как узнать автора комментария,его фио и id. Если делать авторизацию, тогда проблем нет, а вот если используется только виджет комментариев, как тогда быть? В событие OnChange не передается автор.
Если же так нельзя, то может есть способ получить все комментарии со страницы со всеми данными, аналогично fb?
Если же так нельзя, то может есть способ получить все комментарии со страницы со всеми данными, аналогично fb?
Re: Отловить добавление комментария через виджет "Комментарии"
Ой, я пока что не в теме - я только-только начал работать с вконтактовым апи.Ruslan_G писал(а):Подскажите ещё пожалуйста, как узнать автора комментария,его фио и id. Если делать авторизацию, тогда проблем нет, а вот если используется только виджет комментариев, как тогда быть? В событие OnChange не передается автор.
Если же так нельзя, то может есть способ получить все комментарии со страницы со всеми данными, аналогично fb?