Delphi 7 авторизация десктопного приложения вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by veter069, 27 Mar 2011.

  1. veter069

    veter069 Member

    Joined:
    15 Nov 2008
    Messages:
    77
    Likes Received:
    10
    Reputations:
    0
    Делаю клиент для себя, не могу пройти авторизацию. Сделал тестовое приложение и пытаюсь авторизоваться в нем средствами делфи.
    [​IMG]
    Создал форму бросил на нее кнопку и WebBrowser1 окошко. Сделал action onclick
    WebBrowser1.Navigate('http://vkontakte.ru/login.php?app=(номер приложения)&layout=popup&type=browser'); . Загружаеться окно авторизации ввожу почту пароль но ничего не отправляеться при нажатии кнопки разрешить, обьясните что я делаю не так? я нуб в делфи, пробовал вставить ссыылку написанную выше в браузер выдаеться сообщение "Login success". Присваиваиваються sid secret и другие необходимые значения
     
  2. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Раз вылетает у IE ошибка в скрипте - думаю вариант бесполезный, придется делать на Indy или Synapse. Там в два счета это сделать можно, есдинственно тебе придется не только вводить ID приложения, но еще и куки, или делать полноценную авторизацию ВК.

    Еще можно IE посвежее поставить.
     
    #2 Jingo Bo, 27 Mar 2011
    Last edited by a moderator: 27 Mar 2011
  3. veter069

    veter069 Member

    Joined:
    15 Nov 2008
    Messages:
    77
    Likes Received:
    10
    Reputations:
    0
    Ослик 8й через ссылку получаеться авторизоваться в нем, но не через программу
     
  4. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    сначала перейди по той же ссылке у себя в броузере, но layout поставь 15615 и нажми разрешить. потом в дельфи авторизуйся через indy:
    Code:
    var http:idhttp;
    
    function Pars(str,str_begin,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;
    
    function api_auth(email,pass,app_id:WideString):TStrings;
    var
     logVK:WideString;
     PostDataVK:TStringList;
    begin
       try
        if Result=nil then
         Result:=TStringList.Create;
        HTTP:=TidHTTP.Create(nil);
        logVK:=HTTP.Get('http://vkontakte.ru/login.php?app='+app_id+'&layout=popup&type=browser&settings=15615');
        PostDataVK:=TStringList.Create;
        PostDataVK.Add('act=login');
        PostDataVK.Add('app='+app_id);
        PostDataVK.Add('app_hash='+Pars(logVK,'app_hash = ',';',1));
        PostDataVK.Add('email='+email);
        PostDataVK.Add('pass='+pass);
        PostDataVK.Add('permanent=1');
        logVK:=HTTP.Post('http://login.vk.com/',PostDataVK);
        PostDataVK.Clear;
        PostDataVK.Add('s='+Pars(logVK,'value=','/>',2));
        PostDataVK.Add('act=auth_result');
        PostDataVK.Add('m=4');
        PostDataVK.Add('parmanent=1');
        PostDataVK.Add('expire=""');
        PostDataVK.Add('app='+app_id);
        PostDataVK.Add('app_hash='+Pars(logVK,'app_hash" value=','"',0));
        logVK:=HTTP.Post('http://vkontakte.ru/login.php',PostDataVK);
        Result.Add(Pars(logVK,'mid"',',',0));
        Result.Add(Pars(logVK,'sid":','",',0));
        Result.Add(Pars(logVK,'secret":','",',0));
        PostDataVK.Free;
       except
        on e:Exception do
         begin
          PostDataVK.Free;
         end;
       end;
    end;
    
     
  5. veter069

    veter069 Member

    Joined:
    15 Nov 2008
    Messages:
    77
    Likes Received:
    10
    Reputations:
    0
    Спасибо realcoder, когда передал значение 15615 http://vkontakte.ru/login.php?app=2245425&layout=popup&type=browser&settings=15615 в браузере появился запрос ко всему фотографиям друзьм итд теперь получаеться авторизоваться в программе, буду вникать в код и читать про апи контакта