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

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Ответить
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

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

Делал сайт, у которого есть основной домен (*.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.

Код: Выделить всё

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

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

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

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

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

Сообщение sergiks »

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

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

Код: Выделить всё

md5('http://site.com/subfolder")
и

Код: Выделить всё

md5('http://site.com/subfolder/")
— в обоих случаях виджет не выводит существующие комменты.

Другой алгоритм, не md5? Без http:// в начале? Не нашел инфы в документации.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

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

javascript:alert(location.href);
Выводит с http://
В документации не написано, что контрольная сумма md5, может там и свой алгоритм.
Ответить