Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся
- работа с личными сообщениями
- работа со стеной пользователя
- работа с фотографиями и альбомами фотографий
В данный момент хотел бы рассказать как получить список сообщений, например входящих, этой функцией, про которую я буду рассказывать также можно и получить список исходящих сообщений. Итак давайте уже я скажу, что это за функция и какие у нее параметры, данная функция, точнее метод, которая получает список исходящих/входящих сообщений имеет название
- messages.get
Данный методу имеет следующие параметры
- api_id — идентификатор приложения
- sig — подпись безопасности
- v — версия API(тут и возникли проблемы, расскажу ниже)
- out — если равен 1, то вернет исходящие сообщения
- offset — смещение, необходимое для выборки определенного подмножество сообщений
- count — кол-во сообщений, которое необходимо получить (не больше 100)
- filters — фильтр, получаем сообщений (1 — только не прочитанные, 2 — не из чата, 4 — сообщения от друзей)
- preview_length — кол-во символов по которому необходимо обрезать сообщение
- time_offset — максимальное время, прошедшее с момента отправки сообщений до текущего в секундах
- format — XML или JSON
- test_mode — если этот параметр равен 1, то разрешает тестовые запросы к данным приложения.Данный параметр позволяет тестировать приложение без загрузки его на сайт.
Первые 3 параметра являются обязательными как получить подпись безопасности я рассказывал, также хочу сказать, что для того, чтобы получать сообщения из вашего аккаунта необходимо, чтобы для данного приложения стояли права с битовой маской не менее 4096. Другими словами в настройках доступа данного приложения должна стоять галочка работы с Личными сообщениями. Вот что я хотел сказать про v (версию API). На сайте ВК по данному методу написано, что версия API для данного метода должна быть 2.0, я не понял почему, мне все время выдавало ошибку, что типа метод такой не существует, далее я поставил версию 3.0 все заработало, не понимаю почему ВК для таких расширенных методов не предоставила нормальную информацию.
Я создал новую вкладку на TPageControl в программе и поместил туда TListBox - 2 шт и TButton. В первом TListBox будет сообщение, а во втором идентификатор того, кто отправил и мы сможем посмотреть его профиль. На событие OnClick TButton я написал следующий код
procedure TForm1.Button11Click(Sender: TObject);
var
PostVK:TStringList;
sig:string;
i:integer;
begin
try
i:=1;
ListBox3.Clear;
ListBox4.Clear;
PostVK:=TStringList.Create;
sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=messages.getv=3.0'+Pchar(LabelSecret.Caption);
sig:=md5(sig);
PostVK.Add('api_id=1918788');
PostVK.Add('method=messages.get');
PostVK.Add('format=XML');
PostVK.Add('v=3.0');
PostVK.Add('sig='+sig);
PostVK.Add('sid='+Pchar(LabelSid.Caption));
logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
while (i<=length(logVK)) do
begin
if (pos('<body>',logVK)<>0) then
begin
ListBox3.Items.Add(Utf8ToAnsi(Pars(logVK,'<body','</body>',0)));
ListBox4.Items.Add(Utf8ToAnsi(Pars(logVK,'<uid','</uid>',0)));
Delete(logVK,1,pos('</uid>',logVK));
i:=0;
end;
inc(i);
end;
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
Ну я чуток подредактировал наше приложение, там чуток может навел красоты, ну и надо уже брать за модуль, а также в следующий статьях рассмотрим как можно отправлять сообщения. Полный исходник проекта VK API в Delphi можете скачать тут