БлогVkontakte CrossPoster 2. Возвращение.

Сегодня знаменательный день, друзья - мой Vkontakte CrossPoster отмечает возвращение в строй. Чтобы пояснить, где же он был раньше и что с ним происходило, я расскажу небольшую историю.
История
В сентябре 2011 года я написал модуль, который позволяет автоматически отправлять материал вконтакт (пруфлинк). Он отправлял данные автоматически куда надо (использовалась авторизация через протокол OAuth 2.0), и пользователь мог даже не подозревать, что они отправляются. Однако через 4-5 месяцев разработчики вконтакте (ни слова не сказав, даже в документации) закрыли возможность отправлять данные с сайтов во вконтакте (через OAuth 2.0). Немного поковырявшись в имеющейся на тот момент документации, я нашёл другой метод кросспостинга - Open API. Это очень глобально затронуло модуль, т.к. теперь пользователю приходилось подтверждать кросспост в всплывающем окне (Open API работает на js). Это повлекло за собой массу неудобств, начиная от конфликта с некоторыми модулями (например, Overlay) и заканчивая абсолютной невозможностью кросспостить данные любому пользователю, отличному от авторизованного создателю и администратору группы. После этого я на модуле поставил крест, т.к. он потерял свою фишку и удобство в работе, хоть и кросспостить можно было продолжать.
Однако не так давно возможность отправлять данные используя OAuth 2.0 вернулась! С большим удовольствием я переделал модуль обратно, вырезав весь js из кода и подправив несколько важных моментов в работе модуля. И уже сегодня я готов вам представить обновлённый модуль Vkontakte Crossposter версии 2.0.
Установка модуля
Первым делом, как и раньше, надо создать приложение Вконтакте. Для этого надо:
1. Перейти по урлу http://vk.com/editapp?act=create.
2. Выбрать Standalone-приложение, ввести его название и нажать на "Подключить приложение"
3. Получить на свой мобильный смс с кодом и ввести его во всплывшем окне. После этого вы перейдёте на такую страницу:
4. Обязательно заполните поля "Адрес сайта" и "Базовый домен" своими значениями.
5. Сохраните изменения.
6. Приложение готово.
Далее скачиваем и устанавливаем модуль последнюю версию модуля Vkontakte Crossposter. В процессе установки никаких отличий от установки других модулей нет.
После инсталяции модуля перейдите на страницу /admin/config/services/vkxp. Вы увидите вот такую страницу с настройками:
В настройках приложения введите Application ID и Secret key, которые вы получили при создании приложения вконтакте.
Несколько ниже будет поле для ввода Owner ID. Это ID объекта (группы или пользователя), на стену которого вы будете кросспостить материал с вашего сайта. Owner type - тип объекта, чей ID вы ввели (группы или пользователь).
Дополнительные параметры:
- Write from group name - позволяет постить материал в группу от имени группы.
- Add link on wall to posted page - добавляет к записи на стене ссылку на отправленную ноду.
Настройка модуля
Во второй версии модуля все настройки материалов я сделал индивидуальными для каждого типа нод (давно было пора). Их можно найти на странице с настройкой типа материала /admin/structure/types/manage/[NODE_TYPE]. Там вы найдёте вкладку VKontakte CrossPoster settings с такими настройками:
Как только вы включите опцию Enable Vkontakte CrossPoster, то в форму создания/редактирования материала будет добавлена опция "Post this node to vk.com". Если нажать её и сохранить материал, то нода автоматически уйдёт во вконтакт.
Во второй версии модуля я добавил возможность выбирать поле, из которого можно брать текст передаваемого сообщения.
Остальные настройки не должны вызвать никаких вопросов, т.к. проще уже некуда :)
FAQ
Как узнать ID группы/пользователя?
Обычно его можно увидеть в урле объекта. Например, для группы http://vk.com/club231293123 ID - 231293123. Однако некоторые группы/пользователи имеют алиасы. Для таких объектов ID можно узнать посмотрев на их ссылки. Например, для пользователя наведите на отправить подарок / мои подарки и посмотрите ссылку: она будет в виде http://vk.com/gifts58493252. Соответственно, 58493252 - это и есть ID пользователя.
В группе можно навести на Пригласить друзей и увидеть ссылку http://vk.com/friends?act=invite&group_id=231293123. Найти ID группы здесь несложно :)
P.S. На данный момент вторая версия модуля переписана только под Drupal 7. Не уверен, что будет бэкпорт для Drupal 6.
- Spleshka
- 16.09.2012
- 47611
Комментарии
а на разные группы нет возможности? а то только в одну...
Охохо, отличная новость! На днях опробую :)
Если будет время, сделайте backport на Drupal 6. Спасибо.
Согласен. Также готов проспонсировать.
С новой версией не постит... Хотя со старой постил нормально. В журнале никакие ошибки не отображаются.
Приложение создавали по новой инструкции?
Ну да. Сперва конечно попробовал со старым приложением, затем создал новое по вашей инструкции.
Странно, я вчера тестировал - работало. Ну спасибо за репорт, я буду смотреть почему не постится. Надеюсь, разработчики вконтактовские не убрали эту возможность снова =)
Подтверждаю, у меня тоже ничего не постит.
И у меня не постит, старая работала, делал все по новой инструкции
Вот еще к хотелкам, проспонсирую http://drupal.org/node/1791980
Какие новости, разобрались, почему не постит модуль ?
Пока нет. Опять проблема с приложениями. Приложение, которые я зарегистрировал при тестировании - работают до сих пор на любых доменах. Новые - заваливаются полностью. Абсолютно не понятно в чём причина.
Не работает, 3 раза переделывал, что такое пробывал и группу и пользователя!
А можно ли постить на публичных страницах (разновидность групп)? Модуль не заработал?
появилась новость про standalone приложения:
http://vk.com/api_updates
Если это как то поможет проблем, то пожалуйста подскажите как помочь модулю заработать?:)
Жаль, что не работает - ждем исправлений
Как долго ждать то нынче?
Здравствуйте! Я наверно очень глупый, но у мня ничего не получается!
создал приложение как описано! установил модуль, но увы с его запуском проблемка, Автор пишет что должно открыться окно с настройками, куда вводить ID приложения и секретный код. а у меня вместо всего этого нажимая на "настроить" появляется:
Веб-сервисы
Публикация лент
Настройка описания сайта в лентах, количества пунктов в каждой ленте и определение включаемых в ленту полей.
Сборщик RSS-лент
Настройка сбора информации с других сайтов, частоты проверки обновления и способ ее систематизации.
и всё! Подскажите как установить правильно! чтобы работало как у Вас!
Может быть какие либо дополнительные модули необходимы? кроме Vkontakte CrossPoster!
!!!!!!!!!!!!!!!!!!Автор модуля!!!!!!!!!!!!!!!!!! ты вообще тут?
Начал ли работать модуль?
Пока не начал. Все попытки связаться с разработчиками вконтакта пока тщетны. Как только я получу от них какую-либо информацию - я сразу же отпишусь в ветке.
СПАСИБО хоть а этом!
Держи нас в курсе.
Скажите никаких новостей нет, т.к всё по инструкции сделал но пока не работает.
Шеф заработало вчера в 19 00 но на странице хотя я делал в группе!!!!!!
А сейчас работает?
Такой нужный модуль :(
У меня всё по прежнему так и не заработало...
Уважаемый Сплеш, правда что вы начинали свою карьеру в фирме "интернет-маркетинг" в Могилёве, если да, не могли бы вы связаться со мной по средства Имей Joker2948681@gmail.com или например скайпа x4epTeHoKx13, заранее благодарю)
Для чего вам эта информация?
Если да, просто хотелсоь бы пообщатся с вами... я студент из числа которых они взялин а обучение, я хотелбы знать ваше мнение...
"Шев все пропало" когда модуль заработает, можномузнать!?
+1 Ждём, регулярно захожу, модуль нужный.
ну когда же?
Парни, сам жду не меньше вашего. Столько времени и сил было потрачено на это.
А что ты ждешь то нынче скажи на милость
Жду когда вернётся возможность кроспостить с внешний сайтов. Это же не от меня зависит, а от разработчиков вк.
Дайте ссылку или ящик куда писать, что бы их поторопить)
А для публичных страниц модуль работает?
У меня тоже не работает. Делал все по инструкции.
VK отключил такую возможность
Что правда отключил??
надеюсь, что заработает! Модуль нужный! А можно ли делать так, чтобы кросспостились только некоторые типы материалов?
Да, можно. Осталось дождаться изменений в API модуля.
а прописывать уже в самом модуле ограничения по типам материалов, или есть настройки в оболочке друпаловской где-то?
Ну эт в надежде, что заработает)
В настройках типов материалов есть вкладка VKontakte Crossposter.
Модуль работает или нет??есть ли смысл его юзать?..
Не знаю какое API в VK прикрыли, но несколько дней назад (23.11.12) столкнулся с вордпрессовским плагином WP Social Votes. Так он вполне себе нормально кросспостит. API VK ведь для всех движков одинаковое
Спасибо, гляну в плагин вордпресса.
Посмотрел. Там идёт кроспостинг голосов через Open API. И это совсем не то, что делает мой модуль. И протокол авторизации здесь другой. Хотите Open API - используйте 7.x-1.x версию модуля.
Да-да. Разница в функциональности существенная. Но часть из того, что нужно там есть. И 7.x-1.x - вы имеете в виду эту http://drupal.org/node/1562730 ?
> часть из того, что нужно там есть
Нет. Там используется абсолютно другой протокол и другая система работы.
> вы имеете в виду эту http://drupal.org/node/1562730 ?
Да.
Абсолютно согласен. сам видел.
Автор, прошу тебя потратить пол часа времени и восстановить его. буду очень призначтелен
Если ВК не дает постить кроме как через openapi, то прихожится использовать openapi, логично?
У кого-нибудь vkxp 7.x-1.0-rc4 работает? У меня по-прежнему ничего не постит, при нажатии кнопки Receive new access token отправляет на страницу ВК для подтверждения доступа, а потом выдает в drupal_set_message "Access token was not recieved from vkontakte. Error: invalid_grant (redirect_uri is undefined.)"
Да, это при приложении типа веб-сайт. А для standalone идет на http://oauth.vk.com и выдает json {"error":"invalid_request","error_description":"OAuth authorization cannot be used from native VK applications"}
@У кого-нибудь vkxp 7.x-1.0-rc4 работает@
У меня работает. но не сразу стало работать.я заменил на старую версию, не работало. потом начал обновлять модули, после этих изменений за два дня опубликованные новости начали всплывать подтверждения на публикацию. и с тех пор вроде все работает.
Это шутка? или как сайт и страницу в ВК в студию
нет не шутка, вот ссылка на группу http://vk.com/anaurt_com
по прежнему не работает.
есть подвижки какие нибудь с модулем?
очень нжный модуль.
Чтобы постить на публичную страницу, достаточно отписаться техподдержке Вконтакте и попросить их включить импорт RSS на страницу. Будет работать без установки дополнительных модулей.
На публичную страницу будет отсылаться только превью, но не полная публикация.
У меня при попытке использовать вторую версию модуля материал у себя на сайте сохраняется, на вконтактовской стене ничего не появляется. При повторном открытии материала на редактирование галочка Post this node to vk.com снята (если модуль не настроен так, чтобы она стояла по умолчанию) — кстати, не знаю, должно ли так быть, или она должна сохранять состояние после однократного выставления?
При этом, если открыть у приложения вкладку "Статистика", видно, что одно обращение к API (используемый метод — wall.post) каждый раз происходит.
Пробовал использовать первую версию (1.0-rc4); вначале был примерно тот же результат, но при этом даже обращений к API не происходило, и только сейчас понял, что я не получил маркер доступа, а при попытке его получения вылезает белый экран. Обновил в коде адрес для получения маркера доступа, как описано где-то в здешних комментариях, но теперь "ВКонтакте" сообщает, что за последние дни я создал слишком много приложений, так что, чтобы продолжить эксперименты, придётся подождать :).
в версии vkxp-6.x-2.0-rc3 не получал кода. выбивало ошибки "Code is invalid or expired" и "redirect_uri is undefined". Код получил после исправлений в файле vkxp.admin.inc.
Замена строки 19 на
$params['redirect_uri'] = url('admin/settings/vkxp/main', array('absolute' => TRUE));
$result = vkxp_query('', $params, 'https://oauth.vk.com/access_token');
Большое спасибо автору за модуль!
Спасибо! Работает.
Командир, поставил по твоей инструкции версию 6.x-2.0-rc3, не кросспостит...
Стоит ли ждать изменений для 6-ки?
Все сделал как написано,после сохранения пустая страница,обновляю написано сохранено.
но ничего не добавляется в контакт...
Поставил 6.x-2.0-rc3. Ключ получил с помощью http://drupalace.ru/comment/5227#comment-5227
при отправлении новости появляется всплывающее окно с предложением разместить новость вконтакте, однако в группе ничего не появляется. В каком месте ошибка?
еще вопросы:
1) не нашел в настройках, где можно постить в паблик?
2) Есть ли модуль который будет постить rss в стену? Хотелось бы чтобы постинг происходил без моего участия вообще. Есть http://rsstranslator.net , но он платный.
Спасибо!
Да будет счастье всем!
В первую очередь хочу поблагодарить SplasH, за хороший модуль!
По поводу вконтакте API могу сказать, что ничего хуже и нестабильней не видел)
SplasH, надо внести кое-какие изменения в модуле.
Откроется окно. В адресной строке будет access_token.
И везде где используется variable vkxp_access_token, заменить на полученный access_token.
Думаю стоит вместо кнопки сабмит с drupal_goto, сделать ссылку которая будет открывать это новое окно и просить пользователя скопировать полученные данные из адресной строки в textfield. А там уже обрабатывать и сохранять access_token в переменную.
Спасибо!
Благодарю за идею, обязательно попробую.
Дмитрий, работает! спасибо
Можно по подробней где что поправить?
у меня не только не отправляет, но еще и набраный текст дропает и в итоге сохраняется пустая нода (
Михаил, скачивай отсюда: http://yadi.sk/d/erinHkVT2D_80 Заменяй свои файлы модуля, на эти.
Заходи на страницу admin/config/services/vkxp, заполняй данные, нажимай кнопку Recieve new access token, откроется пустое окно, в адресной строке будет GET праметр access_token=много_всяких_символов&.... Копируем эти символы и вставляем на 13 строчку модуля(файл vkxp.module)
define('VKXP_ACCESS_TOKEN', 'много_всяких_символов');
Далее радуемся и пользуемся ;)
Решение очень грубое. Будем ждать обновлений от создателя.
Обновление в процессе. Ваш вариант действительно работает, однако он не особо безопасный. Попробую несколько доработать предложенный вами вариант до удобного использования + проверка доступов. В вашем текущем варианте не используется даже секретный ключ :)
Рад, что смог помочь. Я не претендовал на лучшее решение :) Главное что заработало, а довести до ума можно всегда при желании ;) Если позволишь, немного тематического спама, делал группу для своего личного проекта. Не суди строго, а то убьешь во мне идейную мотивацию. :) Но твое мнение мне интересно, т.к. частенько заглядываю на твой блог. Глянь на досуге если будет время zalipni.com
Сайт в целом симпатичный. Единственное, что сразу бросается в глаза - это ховер. Если делаешь шаблон подобного плана то в первую очеред надо позаботиться о том, что состояние ховера есть на абсолютно каждом кликабельном элементе страницы, а не выборочно.
Ещё момент - твои ajax ссылки можно открыть в новом окне, и тогда отображение форм несколько неожиданное ;)
А так тема неплохая, идея сайта тоже :)
Спасибо за советы, даже не задумывался на счет ховера. На счет ajax ссылки, я ее кончено исключил в robats.txt, ну а так кстати да, фигня получается....там же еще у меня формы через Iframe подгружаются из-за капчи и стандартной валидации, в данном случае это необходимо т.к. использовал модуль Web Form.А как правильно закрыть на все это доступ если страница открывается в отдельном окне браузера?
Посмотри модуль Ajax Register, как это реализовано там. И сайт с живым примером тоже можешь посмотреть.
Спасибо, но там реализовано через ctools api. А я через clorbox и iFrame делал, это мне надо все нафиг переделывать. А мне лень, :) да и не так красиво получится...Эффекты модальных окон в ctools какие-то деревянные... Буду искать другое решение...
Еееееее!!! Большое человеческое спасибо!
Заработало! :]
оказывается надо было в одном месте в писать, а я везде где нашел заменил ))
Спасибо, Дмитирий! Действительно, работает. Само собой разумеется, спасибо, SplasH! :)
Ваша ссылка битая, не могли бы вы залить по новой?
Я узнал об этом здесь: http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
Ключ доступа не был получен от сервера vkontakte.ru. Ошибка: invalid_grant (redirect_uri is undefined.) - вот что говорит у меня на сайте ваш модуль, версия 6.x-2.0-rc3, посоветуйте где поправить? настройки все правильные, но возвращает ошибку.
А не подскажут ли уважаемые гуру, как сделать так сказать наоборот - внедрить "ленту новостей" из вконтакта на страничку?
Актуально, кто-нибудь решил эту проблему? Какой то модуль для drupal, или какой то скрипт, запускаемый через cron, мб как то через RSS можно реализовать? еще идеи есть?
http://vk.com/developers.php?p=wall.get Все подробно расписано
Очевидно подробно для девелоперов, а простому бзверю куда пихать этот валл гет?
Так и не работает приложение.
Планируется исправление? Пробовал уже всеми путями - 0 эффекта.
Дмитрию и SplasH.
SplasH-спасибо за замечательный модуль!!!
Дмитрий-спасибо за то что он что как-то заработал!)))(пусть и не безопасно)
И ещё, вдруг кому пригодится.... настраивал трансляцию по варианту Владимира, если у поля Image стоит Виджет Мультизагрузка вместо Картинка то выбрать в настройках типа материала фотографии не получается, НО можно выбрать их количество и они будут добавляться вместе с материалом на стену(пол вечера убил пока это выяснил) )))
А ещё, вопрос к SplasH. Мне в публикации нужно добавить поле Price из ноды, в каких файлах править код?)) модуль и форма? Или ещё где? Заранее огромное спасибо!
Немного не понял, в данный момент кросспостинг работает!?
Да
А не подскажете каким образом происходит кросспост на стену группы если Api вконтакте не позволяет этого делать для сайта, а дает эту возможность только приложениям?!
Добрый день!!!
Чудо модуль, давно искал, но не знаете аналоги которые постят в паблик??
Подскажите, каким образом для 6-ки заставить модуль работать, буду очень благодарна. Выдает след ошибку - Ключ доступа не был получен от сервера vkontakte.ru. Ошибка: invalid_grant (redirect_uri is undefined.)
Подскажите, каким образом для 6-ки заставить модуль работать, буду очень благодарна. Выдает след ошибку - Ключ доступа не был получен от сервера vkontakte.ru. Ошибка: invalid_grant (redirect_uri is undefined.)
Не увидел сообщение от "GFR":
в версии vkxp-6.x-2.0-rc3 не получал кода. выбивало ошибки "Code is invalid or expired" и "redirect_uri is undefined". Код получил после исправлений в файле vkxp.admin.inc.
Замена строки 19 на
$params['redirect_uri'] = url('admin/settings/vkxp/main', array('absolute' => TRUE));
$result = vkxp_query('', $params, 'https://oauth.vk.com/access_token');
Большое спасибо автору за модуль!
Спасибо! Очень нужный модуль. Все хорошо работает. Единственное, я бы добавил в него вариант обрезки текста не только по числу знаков, но и по разрезке (). Логика - если до разрезки больше 255 знаков, то режим по числу, если меньше, то по разрезке.
Разрезка убилась, вот что имел в виду:
Сегодня поставил этот модуль, настроил, как написано выше. Никаких проблем. Все заработало сразу. Есть только вопросы:
1. При повторном сохранении ноды, создается вторая запись вконтакте. Можно сделать так, чтобы новая запись не создавалась и обновлялась старая?
2. Еще очень хотелось бы иметь список тех нод, которые были успешно отправлены в соцсеть...
Дмитрий,
Всё, что вы написали - реализуемо. Правда, у меня на данных момент отсутствует свободное время для разработки этого. Однако если будут патчи - с удовольствием закину на д.орг.
Здравствуйте. Может кто-то знает в чем беда. Сделал всё как написано, вот только когда создаю тип материала не появляется поле VKontakte CrossPoster settings? Может у кого-то было такое? Дайте ответ пожалуйста. Может еще кому-то это поможет... Спасибо за ваш труд.
Очень полезный модуль, спасибо!
Подскажите, как получить token ? У меня по ссылке переходит на страницу с текстом Page execution time was 92.12 ms. Memory used at: devel_boot()=3.1 MB, devel_shutdown()=18.38 MB, PHP peak=19 MB.
Отличный модуль!!! Спасибо, все замечательно работает.
Хотел бы узнать, а можно ли crosspost вконтакт одновременно и Title и Body материала?
Друзья, один важный момент. Страница, которая будет поститься вконтакт имеет url вида /stranica-url, а в контакте публикуется ссылка вида node/195. Получается 2 дубля страниц. Как заставить модуль оставлять чпу ссылку вконтакте вида /stranica-url
Ответ для вас здесь http://drupalace.ru/comment/5606#comment-5606
И кстати сделал всё по инструкции - кросспостинг не работает. Хостинг it-patrol, drupal-7.28. В логах записей нет. Что делать?
Привет всем, спасибо за модуль.
Подскажите а как быть с постингом товара от commerce? там Product display, соответственно нету таких настроек для постинга товара в типе вариаций товара. :( Есть решение этому?
Всем добрый день.
Есть ли возможность выбрать поле для картинки, если виджет стоит мультизагрузка
При добавлении ноды добавляется не изображение из материала, а какая то картинка из сайта, какая пока не разобрался((
что импортируется: http://arko.ua/statya/test-test
что в итоге получилось: http://vk.com/wall-74044422?own=1
Модуль не доделанный, использовать его нужно очень осторожно..
Картинки не добавляет, ноду при сохранении добавляет а не изменяет
С такими вопросами нужно искать альтернативу
Подскажите кто знает, все настроил, работает, но вот если картинки в посте нет то в место нее хватает что попало например картинку с кнопки поиска или картинку счетчика, как этого избежать?
Unable to recieve upload server. Error: User authorization failed: invalid session.
Ошибка. Как быть?
Огромное спасибо за модуль!!!
Сделайте еще, пожалуйста, action для rules
как при программном создании ноды включить пост ВК
$node->vkxp = 1; // что вместо vkxp написать
node_save($node);
Spleshka спасибо тебе огромные за труды. Пока отключил тк переехал на php5.5 , а он так понимаю не поддерживаетя? Сам я дуб дубом в php. Пока отключил модуль надеюсь все же ты наберешься свободного времени.... https://www.drupal.org/node/2425933#comment-10233237
Заранее спасибо!
Что то не понял модуль работает или нет? У меня, как я с бубном не плясал появляется Access token was not recieved. Reason: Code is invalid or expired.
Создавал и новое приложение, без толку...
Комментировать