Виджеты ВКонтакте на разных доменах

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

Виджеты ВКонтакте на разных доменах

Сообщение Александр » 14 авг 2012, 10:35

Виджеты ВКонтакте на разных доменах
Виджет Комментарии, виджет «Мне нравится»

Делал сайт, у которого есть основной домен (*.ru) и мобильный поддомен (m.*.ru). Мобильный поддомен дублирует содержимое основного сайта, но с другим оформлением.

Было необходимо использовать на сайте виджет комментариев ВКонтакте и виджет «Мне нравится».

После вставки кода из документации ВКонтакте, виджеты без проблем отобразились на двух версиях сайта, но проблема была в том, что оставленные комментарии и лайки на этих сайтах были по отдельности. Комментарий оставленный на полной версии сайта не был доступен на мобильной версии.


О чем говорит документация:
Комментарии различны для каждого уникального адреса на Вашем сайте. Если статья на Вашем сайте может иметь различные адреса (например, в зависимости от источника перехода, языка или других параметров), то в VK.Widgets.Comments последним параметром нужно передавать Ваш внутренний идентификатор страницы - page_id. Пример кода с page_id Вы найдете в полной документации о виджете.

И примерно то же самое в документации по виджету «Мне нравится».

Полная документация по работе виджета Комментарии
Полная документация по работе виджета «Мне нравится»

Сначала я подумал использовать этот page_id.

В описании виджета Комментарии
page_id
Идентификатор страницы на Вашем сайте. Произвольная строка до 128 символов, либо число. Используется в том случае, если у одной и той же статьи может быть несколько адресов, а также на динамических сайтах, у которых меняется только хеш. Значение по умолчанию равно контрольной сумме от location.href.


В описании виджета «Мне нравится»
page_id
Идентификатор страницы на Вашем сайте. Целое 32хразрядное число. Используется в том случае, если у одной и той же статьи может быть несколько адресов, а также на динамических сайтах, у которых меняется только хеш. Значение по умолчанию - контрольная сумма от location.href.


Несмотря на описание в виджете «Мне нравится», page_id как и в виджете комментариев может быть произвольной строкой, а не только числом.
Для генерации page_id я использовал md5 от адреса страницы без имени домена. Это решило проблему с отличиями виджетов на основном и мобильном домене. Но я решил попробовать просто указать в настройках виджетов pageUrl.

pageUrl: адрес страницы с виджетом, на которую ссылается статус в случае, когда включена автоматическая трансляция комментария в статус. (Необязательный параметр)


pageUrl: задает адрес страницы (для отображении у записи на стене). Указывайте в том случае, если адрес статьи отличается от адреса, на котором отображается кнопка "Мне нравится".


Я указал адрес на страницу основного домена. И это тоже решило проблему. Я остановился на этом способе. В моём случае мне он показался лучше, чем использование page_id.

  1. <? $page_url = 'example/';?>
  2. <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?24"></script>
  3. <div id="vk_like"></div>
  4. <div id="vk_comments"></div>
  5. <script type="text/javascript">
  6.     VK.init({apiId: 743131, onlyWidgets: true});
  7.     VK.Widgets.Comments("vk_comments", {limit: 10, attach: "*", pageUrl: "http://flapps.ru/<?=$page_url?>"});
  8.     VK.Widgets.Like("vk_like", {type: "button", pageUrl: "http://flapps.ru/<?=$page_url?>"});
  9. </script>



Разные домены

Иногда бывает, что сайт доступен по разным адресам, например domen.ru и domen.com. На данный момент функционал виджетов ВКонтакте не позволяет решить проблему вывода общего виджета на разных доменах.
Если это ваша ситуация, то задумайтесь о том, чтобы сделать основным какой-то один домен и просто переадресовывать на него с другого домена.

Можно сделать генерацию виджета на основном домене, и уже сгенерированный виджет встроить на другой домен, но это неудобный способ. Лучше попробовать связаться с администрацией ВКонтакте.
Как быть если у меня на одном сайте пишут с нескольких доменов?
mysite.com, mysite.ru, mysite.net.
И хочу чтобы айди приложения был один, привязан ко всем доменам моим
---
invladis 13 сентября 2010 в 19:11
На данный момент общего интерфейса нет, но можете прислать мне список доменов и id приложения. Мы делаем тестовый запуск с изданием vz.ru, например, и у них возникла та же проблема. Пока решаем ее вручную.

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

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

Google
 



Re: Виджет комментариев и page_id

Сообщение sergiks » 03 апр 2013, 08:10

Как вычисляется "контрольная сумма от location.href" для параметра page_id?

Требуется выводить комментарии, которые уже есть для "главной страницы", по новому URL. Для этого надо подобрать этот параметр-по-умолчанию и указать его явно. Пробовал и — в обоих случаях виджет не выводит существующие комменты.

Другой алгоритм, не md5? Без http:// в начале? Не нашел инфы в документации.
Аватара пользователя
sergiks

 
Сообщения: 51
Зарегистрирован: 06 окт 2012, 11:59
Откуда: Москва, Австрия, Франция, Таиланд
Благодарил (а): 5 раз.
Поблагодарили: 4 раз.

Re: Виджеты ВКонтакте на разных доменах

Сообщение Александр » 09 апр 2013, 21:56

sergiks
Можно попробовать в pageUrl на этой странице указать адрес старой страницы.

javascript:alert(location.href);
Выводит с http://
В документации не написано, что контрольная сумма md5, может там и свой алгоритм.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 770 раз.


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



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

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