Здравствуйте, в этой статье я хотел бы поговорить про API VK в Delphi, давненько я не писал об этом, на этот раз я продолжаю работать со стеной пользователя, с которой нам придется работать еще как минимум 1-2 статьи. В этой статье посмотрим как можно отправлять сообщения на стену пользователя, да конечно если вы хотите, чтобы  Вы могли отправлять сообщения на стену Вашего друга, то у него должно быть данное приложение и даны ему права не меньше 8192, да именно столько требует ВК для работы с сообщениями со стены. Ну что теперь давайте поговорим о самом методе, который посылает на стену пользователя сообщения, по умолчанию текущий пользователь, запомните это, то есть Вы. Итак метод

  • wall.post

И отвечает за посылку сообщений на стену пользователей. Теперь рассмотрим немного параметры данного метода

  • api_id - идентификатор приложения
  • sig - подпись безопасности
  • v - версия API. Текущая 3.0, а в документации ВК API написана 2.0, будьте внимательны
  • owner_id - идентификатор пользователя, которому необходимо отправлять сообщение. По умолчанию текущий пользователь
  • message - сообщение, отправляемое пользователю
  • test_mode - если равен 1, то разрешает тестовые запросы к данным приложения

В результате этого будет возвращен результат в формате, который выберите Вы (XML или JSON), с идентификатором сообщения, которое Вы послали на стену пользователю. Да забыл сказать, что первые 3 параметра и параметр message являются обязательными. Что тут необходимо предусмотреть — это, чтобы Ваше сообщение было послано в нужной кодировке и чтобы на стене не отображались потом разные иероглифы, для этого я использую AnsiToUtf8. Также не забывайте в алфавитном порядке составлять подпись безопасности и конечно использовать версию API - 3.0. Ну я на вкладку «Стена» добавил пару TEdit и TButton и написал код, который отправляет на стену сообщения

procedure TForm1.Button16Click(Sender: TObject);
var
 sig:string;
 i:integer;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Edit6.Text)+'method=wall.postowner_id='+Edit5.Text+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=wall.post');
    PostVK.Add('format=XML');
    PostVK.Add('message='+AnsiToUtf8(Edit6.Text));
    PostVK.Add('owner_id='+Edit5.Text);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    if pos('error_code',logVK)=0 then
     begin
      Showmessage('Message send');
     end
    else
     begin
      ShowMessage('Not message send');
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

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

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

Полный исходник проекта можно скачать тут

Автор статьи - Andrey53

Метки: , , , , ,




К записи “Проект VK API в Delphi. Отправляем сообщение на стену” оставлено комментариев: 11.

  1. SoulReaver:

    Попытался авторизироваться, безрезультатно. Попробовал исходник — он так же не авторизируется. Падает на пост запросе с ошибкой HTTP/1.1 302 found (видимо т.к. происходит редирект). Если в свойсте idHTTP указать HandleRedirects как True, то ошибка исчезает, но полученные похоже уже совсем не то что нужно. В чем собака?

  2. Andrey53:

    Незнаю, сегодня попробывал свой исходник работает на ура, все получает, все отправляет, Насчет редиректа Вы правы, в исходниках был выставлен он, возможно когда Вы пытались авторитизироваться лежал сервер ВК, в последнее время он частенько глючит, может именно сервер АПИ лежал, может ВЫ не добавили приложение на свою страницу и не дали ему нужные права, но у меня сегодня мой исходник работает

  3. Kolored:

    А есть возможность отправлять сообщения на стену групп?

  4. Роман:

    procedure TForm1.Button1Click(Sender: TObject);
    var t,d,s:string;
    data:tstringlist;
    begin
    IdHTTP1.AllowCookies:=true;
    IdHTTP1.HandleRedirects:=true;

    if Pos(», t)0 then memo1.Lines.add(‘Íå âîøëè’) else memo1.lines.add(‘âîøëè’);

    d:=copy(t,pos(‘»max_post_len»:280,»post_hash»‘,t),60);

    data:=tstringlist.create;
    data.Add(‘act=post’);
    data.add(‘al=1′);
    data.add(‘hash=3412816de5541e83ba’);
    data.add(‘message=5678877′);
    data.add(‘to_id=83955121′);
    data.add(‘type=all’);
    s:=idhttp1.Post(‘http://vkontakte.ru/al_wall.php’,data);
    data.free;
    memo1.Lines.add(s);

    ShellExecute(0,’Open’,’http://vkontakte.ru/al_wall.php?act=post&al=1&hash=3412816de5541e83ba&message=233336666663&to_id=83955121&type=all’,nil,»,SW_SHOWNORMAL);

    end;

    end.

    Я вот так написал код, но он не работает почему-то, ваш вариант тоже не работает.

    • Andrey53:

      в чем именно он не работает, какая ошибка? вконтакте для приложения все ли права выставлены?

  5. Роман:

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

    • Andrey53:

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

  6. Роман:

    Как права вашему приложению дать я понял, а если я сам написал программу, как мне ей получить права вконтакте?

    • Andrey53:

      точно так как и в моем приложении, посмотрите ссылку в моем приложении, только вставьте свой идентификатор приложения, или в настройках приложения вконтакте

  7. Андрей:

    Автор удалите пост! Он давно не акруален

Оставить комментарий на Andrey53

Вы можете использовать следующие теги:

*