Мы предлагаем:У нас есть:
1 базу данных MySQL(50MB)PHP 5
Прикрепление своих доменовMySQL
Предустановленные движки сайтовPerl
Место под файлы(300MB)Ruby
Бесплатно и без рекламы!
Авторизация:
e-mail: Пароль:
Забыли пароль?    Запомнить  
Все блогиПрограммирование → Бот для вконтакта
Rss

Задумался написать бота для Вконтакта, который мог бы периодически постить что-то от имени пользователя себе на стену, другим на стену или в группу. А натолкнул меня на это комментарий в нашей группе, почему там новости не от имени группы.

И так, приступим. Программировать будем на ruby. Для начала надо отметить, что API Вконтакта позволяет писать сообщения только Standalone приложениям, т.е. это настольные или мобильные клиенты. Чем обломали всю малину для скриптов. Проблема заключается в авторизации. Если для всех типов приложений, кроме нужного, возможно просто перенаправить юзера на Вконтакт, и потом их сервер вернет нужному серверу необходимый токен для взаимодействия от имени пользователя, но настольные приложения такого лешены напрочь, они должны ловить события браузера.

Люди начинают извращаться, самое популярное – имитировать браузер программно, отправлять серверу форму авторизации с логином и паролем, что не безопасно для юзера, и вообще, юзер не должен хранить свои логины\пароли на непонятных сервисах. Но тем не менее продолжим.

Сперва необходимо зарегистрироваться и получить ключи для своего приложения здесь. Реализация API Вконтакта есть в геме vk-ruby:

gem install vk-ruby

Минимальный код выглядит так:

require ‘vk-ruby’
app = VK::Standalone.new(:app_id=>APP_ID, :app_secret=>’APP_SECRET’)
app.authorize ‘CODE
app.wall.post(:message=>"сообщение", :owner_id=>’ID_стены_пользователя’)

Теперь по порядку:

  • APP_ID – уникальный идентификатор, который получается после регистрации. Сейчас это 7 цифр
  • APP_SECRET – секретный ключ, получается там же. Набор букв и цифр.
  • ID_стены – вроде все просто, id юзера подставляется и все, а вот если писать в группу, то надо писать черточку перед id, плюс чтоб в группу написать от имени группы необходимо добавить :from_group=>1, в итоге получится вот так: app.wall.post(:message=>@@message, :owner_id=>’-39782226’, :from_group=>1)
  • CODE – самое сложное, вот его то как раз и нельзя получить нормально. В целом юзер просто должен перейти по ссылке вида: oauth.vk.com/authorize?client_id=APP_ID&scope=К_ЧЕМУ_ДОСТУП&redirect_uri=blank.html&response_type=code, где APP_ID, как выше, а список доступа есть здесь

В ответ юзер увидит ссылку вида oauth.vk.com/blank.html#code=f1aa93977ab7bc63da, где последнее “f1aa93977ab7bc63da” и есть нужное нам CODE.

Вот так вот Вконтактик усложнил нам 3 строчки кода, хотя мог бы просто в качестве обратного url принимать адрес стороннего ресурса, как это сделано для остальных видов приложений и проблем бы не было, юзер бы просто редиректился туда-сюда, кликал бы там что разрешить и все.

P.S. мне забавны группы, где написаны разные идеи и мысли, я нашел большую базу с высказываниями и автоматизировал процесс. Присоединяемся, смотрим. Каждые 4 часа 1 новая цитата, повторяемость – 1 раз в 6 лет. Вот оно превосходство программы над человеком! :)


Автор: Денис | Дата создания: 09 июня 2012, 16:24 UTC | 0.397


Комментарии(9)
Gitaros  09 июня 2012, 16:41 UTC  #
0.0
Blank

Как всегда что то интересное, но для меня не понятное.

Денис  09 июня 2012, 16:47 UTC  #
0.29
Index

Я готов пояснять подробнее, если будут вопросы.

cyber01  10 июня 2012, 08:35 UTC  #
0.0
Avatar

Так под что его юзать будем?) Перепост статей? Больше вариантов не вижу

bartokng  12 июня 2012, 08:00 UTC  #
0.0
392

Для перепоста для начала, самое оно!

Арсений  25 ноября 2015, 16:27 UTC  #
0.0
0cfd0jeujkq

Так,с началом разобрался..
Но не пойму..вот есть к примеру база.. как ее подключить к приложению?

Денис  25 ноября 2015, 21:26 UTC  #
0.0
Index

Смотря на чем пишешь. Если на ruby, то в этом месте разумно перейти сразу на Ruby on Rails. Или вот.

Арсений  25 ноября 2015, 22:25 UTC  #
0.0
0cfd0jeujkq

проблема в том что в авторизации поменялось некоторое.. Ты писал 3 года назад..

Павел  26 ноября 2015, 09:03 UTC  #
0.061
2bfe965ab5ef94a0568bc61c36b46d4c

Да нет, не так уж много. Нужно обратить внимание только на это:

redirect_uri=https://oauth.vk.com/blank.html
Это обязательное условие для работы с методами, в описании которых указано, что они доступны только для Desktop-приложений.

Арсений  26 ноября 2015, 12:31 UTC  #
0.0
0cfd0jeujkq

Так..а базу как подключить?
как будет идти анализ данных?


Простите, Ваш браузер не поддерживает html5
Управление стрелками. Пробел - пауза.