Здравствуйте, вот все продолжаю мучать 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('http://api.vkontakte.ru/api.php',PostVK);
while (i<=length(logVK)) do
begin
if (pos('',logVK)<>0) then
begin
ListBox3.Items.Add(Utf8ToAnsi(Pars(logVK,','',0)));
ListBox4.Items.Add(Utf8ToAnsi(Pars(logVK,',' ',0)));
Delete(logVK,1,pos('',logVK));
i:=0;
end;
inc(i);
end;
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
Ну я чуток подредактировал наше приложение, там чуток может навел красоты, ну и надо уже брать за модуль, а также в следующий статьях рассмотрим как можно отправлять сообщения.
Кстати хочу сказать, что сейчас услуги через смс довольно распространены в сети Интернет. Поэтому, если у Вас есть свой проект, свой бизнес в сети Интернет, то Вы очень быстро и просто, сможете прикрутить смс-биллинг. Сделайте Вашим клиентам удобство по оплате услуг и товаров. |
Полный исходник проекта VK API в Delphi можете скачать тут
Автор статьи - Andrey53
Похожие записи
Метки: API, VK API, vkontakte, vkontakte API, вконтакте API
тут грузятся все сообщения…как грузить только не прочитанные?
а то у меня при запросе сообщений программа вешается,по ходу из за того что у меня тыщи сообщений!Хотя все прочитаны
я принимаю по 10 сообщений,теперь программа не виснет..но в сообщениях кракозябры!как исправить?
какой у Вас IDE, версия Indy?
ну у меня стоит delphi 2010 ,а вот как поглядеть версию indY не знаю…
А Вы пробовали использовать AnsiToUTF8 и наоборот?
а как использовать?
с кодировкой разобрался!нужно убрать AnsiToUTF8
должно получится так
ListBox1.Items.Add((Pars(logVK,'
ListBox2.Items.Add((Pars(logVK,'а как превратить ИД в имя и фамилия???а то получается не понятно по иду смотреть от кого пришло!
посмотрите, возможно функция API есть такая, а может можно и ники парсить вместо id, результат весь выведие и посмотрите, если не получиться, то скажите, попробую найти проблему
Автор, Вы полный кретин и недоумок! Зачем выставлять свой код, полный ошибок на обозрение, чтобы другие повторяли ошибки?
Зачем Вы обращаетесь из потока к форме? Справка для кого?