Проект VK API в Delphi. Авторизация приложения в сети

Теперь нам необходимо авторизировать приложение в сети и получить секретный код и значение sid, которые в дальнейшем нам пригодятся для того, чтобы получать список друзей пользователя, список фотографий, альбомов и так далее. Что нам потребуется на данный момент

Tedit — 2 шт
TButton
TLabel — 3 шт
TidHTTP
ну и я поставил еще TPageControl

Для того, чтобы получить данные сессии для нашего приложения, нам необходимо отправить запрос на

http://vk.com/login.php.

Для начала мы получим запрос GET-ом для того, чтобы получить необходимые данные для отправки запроса POST на страницу vk.com/login.php. Для того, чтобы получить запрос GET нам необходимо получить следующую страницу ввида

http://vk.com/login.php?app=1918788&layout=popup&type=browser&settings=130

То есть мы должны заполнить данными наш URL для дальнейшего получения нужной нам информации. Где

app — идентификатор приложения, который вы получили при регистрации, мой идентификатор равен — 1918788
layout — указывает тип дизайна, получаемой страницы
type — указывает каким образом передается значение сессии
settings — битовая маска доступа настроек приложения к вашей странице.

Более подробно про авторизацию приложения Вы сможете прочитать на сайте ВК. Далее, когда мы получили нужный нам параметр с этой страницу, а получали мы значение app_hash путем парсинга страницы полученной, нам необходимо отправить POST запрос на страницу http://login.vk.com/ после чего получить новое значение app_hash и только потом отправить POST запрос на страницу vk.com/login.php, где мы уже будем получать данные сессии путем парсинга.

Перед началом всей этой работы я написал функцию парсинга вот такую

function Pars(str:String;str_begin:String;str_end:String;count:integer):String;
begin
   Delete(str,1,pos(str_begin,str)+length(str_begin));
   Delete(str,pos(str_end,str)-count,length(str));
   Pars:=str;
end;


И объявил вот такие вот переменные

PostVK:TStringList;
  htmlVK:WideString;
  logVK,app_nash:String;


Итак на событие onClick кнопки получить я написал следующий код

procedure TForm1.ButtonGoClick(Sender: TObject);
begin
   try
    logVK:=IdHTTP1.Get('http://vk.com/login.php?app=1918788&layout=popup&type=browser&settings=15615');
    PostVK:=TStringList.Create;
    PostVK.Clear;
    PostVK.Add('act=login');
    PostVK.Add('app=1918788');
    PostVK.Add('app_hash='+Pars(logVK,'app_hash = ',';',1));
    PostVK.Add('email='+EditLogin.Text);
    PostVK.Add('pass='+EditPass.Text);
    PostVK.Add('permanent=1');
    logVK:=IdHTTP1.Post('http://login.vk.com/',PostVK);
    PostVK.Clear;
    PostVK.Add('s='+Pars(logVK,'value=','/>',2));
    PostVK.Add('act=auth_result');
    PostVK.Add('m=4');
    PostVK.Add('parmanent=1');
    PostVK.Add('expire=""');
    PostVK.Add('app=1918788');
    PostVK.Add('app_hash='+Pars(logVK,'app_hash" value=','"',0));
    logVK:=IdHTTP1.Post('http://vk.com/login.php',PostVK);
    LabelSid.Visible:=True;
    LabelMid.Visible:=True;
    LabelSecret.Visible:=True;
    LabelMid.Caption:=Pars(logVK,'mid"',',',0);
    LabelSid.Caption:=Pars(logVK,'sid":','",',0);
    LabelSecret.Caption:=Pars(logVK,'secret":','",',0);
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;


То есть все как и говорил, получаем сначала GET-ом, а затем 2 POST-запроса, чтобы наконец-то добраться до нашей сессии и пропарсив ее, мы получим нужные нам данные — это

expire — Время истечения сессии в формате UNIX
mid — ID пользователя в ВКонтакте
secret — Специально сгенерированный секрет сессии
sid — Идентификатор сессии

Эти данные в дальнейшем понадобятся нам для получение более нужной информации с ВК. Но это в следующей статье и готовится модуль, который одной функцией будет получать все эти данные для дальнейшей работы.
Сейчас без сайта очень трудно представить крупную компанию, да и вообще продвинутого Интернет-пользователя. Для того, чтобы Ваш сайт постоянно и стабильно работал — Вам необходим надежный хостинг. Без хостинга никуда, так как это то место, где будет размещаться Ваш сайт. Хостинг Украины предоставляет Вам такую надежность, а самое главное качество и поддержка пользователей профессиональными специалистами.
Добавлено: 15 Августа 2013 10:35:06 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...