Доброго времени суток!
Сегодня мы поработаем с API ВКонтакте.
Тех, кого пугает обилие букв - сразу заинтригую тем, что мы напишем программу для Контакта.
Все что Вы делаете вручную - можно сделать программным способом.
Что нам потребуется для написания программы:
1. Для выполнения запроса будем использовать библиотеку Synapse модуль httpsend .
Скачать Synapse можно отсюда. И все файлы из архива поместите в папку проекта программы.
2. Для того чтобы Synapse мог работать с протоколом https в папку с проектом программы нужно поместить 2 dll - ssleay32.dll и libeay32.dll . Это важно - если этих dll-лей не будет, Синапс будет работать по протоколу http, даже если Вы указываете в URL https, а VK - сервер в целях безопасности не работает по http . Скачать можно здесь. Все файлы из архива брать не нужно, только 2 эти dll.
3. Для того, чтобы Ваша программа могла производить действия от Вашего имени - мы должны зарегистрировать ее https://vk.com/apps?act=manage - создать новое приложение и записать его ID.
Далее - этому новому приложению Вы должны выдать разрешение доступа (к нашим сообщениям, фото, стене, друзъям и т.д.) в виде токена , делается это так:
Нужно пройти по нижеуказанной ссылке, где вместо ХХХХХХХ нужно подставить ID Вашего приложения
https://oauth.vk.com/authorize?client_id=XXXXXX&scope=notify,photos,frie...
Обратите внимание на строку - scope= там указываются разделы, доступ к которым мы запрашиваем.
Нажимайте разрешить и перейдете к следующему окну
Из адресной строки которого и нужно скопировать и сохранить куда-нибудь токен. (Имейте в виду - токен выдается на время, он может устареть, если сессия пользователя завершена на всех устройствах или пользователь сменил пароль.
После чего можем перейти непосредственно к программированию.
1. В разделе Uses указываем HTTPSend и ssl_openssl
2. В разделе Var объявляем переменную HTTPSend1:THTTPSend;
3. Кидаем на форму Кнопку , для кнопки пишем код:
procedure TForm1.Button1Click(Sender: TObject);
var zapros:string;
begin
zapros:='https://api.vk.com/method/wall.post?owner_id=15254905&message=test&acces...';
HTTPSend1 := THTTPSend.Create;
try
HTTPSend1.Sock.CreateWithSSL(TSSLOpenSSL);
HTTPSend1.Sock.SSLDoConnect;
HTTPSend1.HTTPMethod('GET', zapros);
finally
HTTPSend1.Free;
end;
Осталось дело за малым - сформировать строку запроса.
Например, мы хотим к себе на стену поместить запись "С НГ 2018 ! "
Тогда мы воспользуемся методом wall.post , список параметров смотрим
Самыми важными из них являются owner_id - (посмотрите свой ID ВКонтакте) - это числовой параметр - на чьей стене пишем и message - текст публикации.
Так же мы должны передать токен, подтверждающий право на публикацию.
В итоге строка запроса будет выглядеть примерно так:
zapros:='https://api.vk.com/method?wall.post&owner_id=XXXXXXX&message=XXXXXXXXXXXXX&access_token=XXXXXX&v=5.69';
Для проверки - можно вставить ее в строку адреса браузера и нажать Enter - если на Вашей странице опубликована запись - значит строка запроса составлена правильно.
Исходник прилагается, но т.к. он настроен на мою стену - я стер пару символов в access_token. Так что пока не замените на свои данные - работать не будет.
Теоретически не сложно доработать исходник, например, чтобы разом поздравить всех своих друзей с Новым Годом (хотя нужно учитывать, что при массовой рассылке сообщений ВК выведет капчу)
Можно написать разные VK-боты: например - пусть программа все время проверяет наличие свежих сообщений и если сообщение начинается на "Приве" (без учета регистра) или "Здра", "Здор" и т.д. - отвечает "Салам пополам!" .
Attachment | Size |
---|---|
![]() | 25.16 KB |
![]() | 40.8 KB |
![]() | 1.28 MB |