Проект VK API в Delphi. Работа с статусами

6 минут на чтение

Здравствуйте, в этой статье хотел бы рассказать как я менял статус, смотрел последний измененный статус, а также историю изменения статусов. Вообще у меня почему на этом этапе сразу же возникли проблемы при отправке запроса на сервер, я почему-то не понял почему не хочет. Оказывается, что у меня права на доступ моего приложения к моей страничке стояли с меньшей битовой маской, чем 1024. Теперь Вы понимаете, что для работы с статусами пользователя необходимо, чтобы битовая маска прав доступа для данного приложения была не меньше 1024. Давайте пройдемся немного по методам API ВК, начнем с того, как нам получить статус пользователя, для этого существует метод

  • activity.get

Параметры при этом методе можно сказать как таковых нету, только один необязательный параметр это — uid - идентификатор пользователя, которого статус необходимо получить, по умолчанию текущий идентификатор. Ответ приходит следующим образом

  • time
  • activity
  • id

time - видимо когда был установлен статус, activity - текст статуса, id - идентификатор пользователя, для которого мы смотрим статус.

Далее все как положено отправляем теже данные, что и для других запросов. Для получения статусу пользователя я написал следующий код

procedure TForm1.Button7Click(Sender: TObject);
var
 sig:string;
begin
   Try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=activity.getv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Add('api_id=1918788');
    PostVK.Add('method=activity.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);
    ShowMessage(Pars(logVK,'<activity','</activity>',0));
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Да не забываем, что нам необходимо для начало авторитизироваться, получить данные сессии, а затем сформировать секретный код. И конечно же Вы не сможете посмотреть статус Вашего друга, если у Вашего друга для данного приложения не стоит битовая маска доступа к его странице не менее 1024.

Теперь поговорим о методе API, который позволит нам установить нужный нам статус, для этого ВК API предоставляет нам такой замечательный метод как

  • activity.set

У него параметров не так уж и много, а всего один, но тут правда уже этот параметр обязательный, в предыдущем методе, единственный параметр был необязательный, а тут да, ну естественно, нам же надо установить какое-то значение в статус вот он и обязательный, этот и есть наш параметр — text. Давайте попробуем установить новый статус, далее на TButton событие OnClick я написал следующий код

procedure TForm1.Button8Click(Sender: TObject);
var
 sig:string;
 PostVK:TStringList;
begin
   Try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=activity.settext=test statusv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Add('api_id=1918788');
    PostVK.Add('method=activity.set');
    PostVK.Add('format=XML');
    PostVK.Add('v=3.0');
    PostVK.Add('sig='+sig);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    PostVK.Add('text=test status');
    logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
    if pos('error_code',logVK)=0 then
     ShowMessage('Status Set Ok')
    else
     ShowMessage('Not status Set');
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Что здесь может быть проблемой, то что Вы можете написать в sig, когда Вы формируете эту переменную, text=test status, после v=3.0 — это будет ошибкой. Другим боком статус не установится.

Ну и наконец давайте перейдем к тому, как можно получить историю, установленный статусов, для этого ВК API предоставляет метод

  • activity.getHistory

У которого можно сказать нету параметров, только один необязательный — это uid - идентификатор пользователя, для которого смотреть историю изменений статусов, по умолчанию текущий пользователь, то есть МЫ.

Для получения истории статуса я написал следующий код

procedure TForm1.Button9Click(Sender: TObject);
var
 sig:string;
 i:integer;
 PostVK:TStringList;
begin
   Try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=activity.getHistoryv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Add('api_id=1918788');
    PostVK.Add('method=activity.getHistory');
    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);
    i:=1;
    while i<=length(logVK) do
     begin
      if pos('</text>',logVK)<>0 then
       begin
        ListBox2.Items.Add(Utf8ToAnsi(Pars(logVK,'<text','</text>',0)));
        Delete(logVK,1,pos('</text>',logVK));
        i:=0;
       end;
      inc(i);
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

То есть здесь я в цикле добавляю в TListBox статусы, которые я ставил себе на страницу когда либо, также Вы можете получить когда эти статусы создавались, это заключается в теги <created>time</created>. Далее поговорим еще с более интересными, расширенными методами ВК API, а также будем обновлять наш модуль

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Здравствуйте, давненько я не писал про проект VK API в Delphi, на этот раз хочу продолжить серию статей про данный проект, тем более, что еще достаточно много не рассмотрено функций по работе с VK API. В последних статьях про VK API в Delphi мы рассмотрели фун...
Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся работа с личными сообщениями работа со стеной пользователя работа с фотографиями и альбомами фотографий В данный момент хоте...
Вот хочу запустить проект VK API в Delphi(Вконтакте API в Delphi), в связи с тем, что сам сайт вконтакте открыл возможно обращаться к серверу API Vkontakte из Desktop-приложений. Довольно интересно, так как можно написать свой IM-клиент для контакта и общаться...