понедельник, 20 января 2014 г.

Прикрепление блока комментариев из соцсетей на страницу сайта (ВКонтакте).

Задача:
Предоставить пользователям сайта возможность добавлять комментарии на страницу сайта, используя свой аккаунт в соцсетях. Делаем для ВКонтакте (далее - VK), т.к. сайт ориентирован на рунет, а VK - самая популярная в рунете соцсеть.

План:
  1. Найти способ установки виджета, при котором его может администрировать не только создатель (т.е. разработчик собственно сайта), но и другие пользователи VK.
  2. Получить код приложения и разместить его на нужной странице сайта.
  3. Вывести блок "Последние комментарии", содержащий несколько последних комментариев без привязки к страницам.


Выполнение:

1. Основной проблемой стало то, что виджет создается под определенным аккаунтом, а значит администрировать его (модерировать комментарии, банить пользователей и т.д.) может только определенный человек.. Но мне, как разработчику, заниматься этим не с руки, да и остальные работники могут увольняться или передавать свои полномочия. Так что нужна возможность администрировать еще и пользователей виджета.

Такая возможность есть:

http://vk.com/dev/widget_comments#Администрирование виджета:
"Для модерации комментариев в интерфейсе виджета предусмотрена панель администрирования. Доступ к ней имеют все администраторы приложения ВКонтакте, к которому подключен виджет. Перейти к интерфейсу модерации можно по ссылке "администрирование" в шапке виджета на любой странице Вашего сайта."
Вид панели администрирования:

 
Как видно на картинке, справа есть ссылка "назначить администраторов". Если перейти по ней, то можно будет добавить пользователей с правами админов для виджета. 

Таким образом, мы все равно должны создавать виджет под своим аккаунтом, но можем назначить для него админов. Друго способа я не нашла.

2. Установка.

Страница виджета:
http://vk.com/dev/Comments





Все просто - выставляем настройки, получаем код, копируем его на страницу сайта, все готово.

Если этого мало, есть страница подробной документации, на которой можно почитать, как сделать более тонкую настройку приложения. Нам хватило первой страницы.


Страница подробной документации квиджету:
http://vk.com/dev/widget_comments

Если страницы сайта строятся динамически, к примеру, если это блог и мы хотим добавить комменты к каждой статье, то мы просто в шаблоне статьи блога вставляем полученный код, и каждая статья комментируется отдельно.

3. С блоком "Последние комментарии" ничего не получилось. Т.е. возможность есть, но на деле один вариант не подходит для нашего сайта, второй - не работает

Первый вариант:


http://vk.com/dev/widget_comments#Обзор комментариев:
"Функция VK.Widgets.CommentsBrowse позволяет отображать комментарии со всех страниц Вашего сайта единым потоком. У каждого комментария есть ссылка на страницу сайта, где он был опубликован."
 Вот картинка с описанием функции:

 Ограничиваем количество комментариев в блоке "Последние комментарии" 5 штуками:

limit: 5 (Как и сделано на картинке)
Ну и, естественно, прописываем в apiId id своего приложения. В первом блоке кода в функции
  VK.init это так же параметр apiId

Созданный таким образом блок не подходит. Т.к. ширина виджета не может быть меньше 300 px и он выбивается из дизайна сайта:


Это правая боковая панель на сайте и блок комментариев должен быть по ширине как верхний блок меню (который белый с ссылками)

Второй вариант:

Сделать запрос  get или post и получить ответ в формате json:

Описание как делать запросы к api VK:
http://vk.com/dev/api_requests

Описание метода для поулчения списка комментариев (widgets.getComments) :
http://vk.com/dev/widgets.getComments

Но даже в документации VK этот метод работает с ошибкой. По этому поводу даже есть запись в их багтрекере:
http://vk.com/bugs?act=show&id=51970892_1

Ответ дан в том духе, что  "да, документация не полная".

Есть описание этого метода видимо в устаревшем API (тоже не работает):
https://vk.com/developers.php?oid=-1&p=widgets.getComments

Так что пока мы остались без блока последних комментов

Итог:
  1. решено
  2. решено
  3. нет

1 комментарий: