Авторизация вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Zuldrak, 8 Apr 2010.

  1. Zuldrak

    Zuldrak New Member

    Joined:
    15 Jan 2010
    Messages:
    45
    Likes Received:
    1
    Reputations:
    0
    Не подкинет кто нить пример авторизации с idhttp , а то по многому пробывал и чет не катит,желательно builder

    Пробывал так

    HTML:
    AnsiString get_sid; AnsiString Name = "mr@mail.ru"; AnsiString Password = "****"; AnsiString     current_id;get_sid = web->Get("http://login.vk.com/?act=login&email=maxr@mail.ru&pass=34x&expire=0"); get_sid = get_sid.Delete(1,get_sid.Pos("id='s' value='")+13); get_sid = get_sid.Delete(get_sid.Pos("'"),get_sid.Length()); current_id = get_sid; Cook->AddCookie("remixchk=5","vkontakte.ru"); Cook->AddCookie("remixsid="+get_sid,"vkontakte.ru");   TStringStream *respon = new TStringStream(); TStringList *post= new TStringList(""); post->Add("u=2&op=slogin&redirect=1&expire=0&to=bWFpbC5waHA-&s="+current_id); web->Post("http://vkontakte.ru/login.php",post,respon); Memo1->Text = respon->DataString; delete respon,post;
     
    #1 Zuldrak, 8 Apr 2010
    Last edited: 8 Apr 2010
  2. ChinaTown

    ChinaTown Member

    Joined:
    15 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Писал как то)


    Code:
     procedure login;     var  html:string;  s:string ;  begin      Form1.Label1.Caption:='Получам доступ в хранилище' ;   html := form1.IdHTTP1.Get('http://vkontakte.ru/login.php?op=a_login_attempt');   if (html='vklogin') then   begin   Form1.Label1.Caption:='Обмениваемся информацией с хранилищем' ;   html:=form1.IdHTTP1.Get('http://login.vk.com/?act=login&email=sss@ddd.ru&pass=pass&expire=&vk=');   s:= RegexProc('value='''+'([\w]{15,80})',html);   s:= RegexProc('[\w]{15,80}',s);       Form1.IdHTTP1.HandleRedirects:=true;       Form1.IdHTTP1.RedirectMaximum:=0;       Form1.IdHTTP1.CookieManager:= form1.IdCookieManager1;       Form1.IdHTTP1.AllowCookies:=true;     Try   html:= Form1.IdHTTP1.Get('http://vkontakte.ru/login.php?op=slogin&redirect=1&expire=0&to=&s='+s) ;    Except      ShowMessage('Неизвестная ошибка');    end;    cook:=  RegexProc('remixsid=([\w]{20,100})', form1.IdHTTP1.Response.RawHeaders.GetText  );    cook:=  RegexProc('([\w]{20,100})',cook);   end   else   begin   Form1.Label1.Caption:='Доступ невозможен, т.к. на ваш айпи повешенна капча!' ;   end;       end;

    Code:
    Form1.IdCookieManager1.AddCookie('remixsid='+cook+'; path=/; ','vkontakte.ru');    Form1.IdCookieManager1.AddCookie('remixchk=5; path=/;','vkontakte.ru');      Form1.IdHTTP1.CookieManager:= Form1.IdCookieManager1;    Form1.IdHTTP1.Request.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';    request:=TStringList.Create;    Form1.IdHTTP1.AllowCookies := true;    //request.Add('midAuth=1');    //request.Add('user='+'jjj');    //request.Add('pswd='+'lll');    Form1.Label1.Caption:='Переходим на vkontakte.ru' ;    try    bufer:=Form1.IdHTTP1.Get('http://vkontakte.ru/');      except  ShowMessage('Ошибка связи!');
     
  3. ChinaTown

    ChinaTown Member

    Joined:
    15 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Правда на делфи, но думаю поможет. А вообще инди глючная фигня.
     
  4. Zuldrak

    Zuldrak New Member

    Joined:
    15 Jan 2010
    Messages:
    45
    Likes Received:
    1
    Reputations:
    0
    Точно рабочий? А то щас переведу и опять облом))
     
  5. ChinaTown

    ChinaTown Member

    Joined:
    15 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Ну ты же хочешь наверно быть программистом или как минимум написать чтобы работало.
    Вот на это нужен мозг. Пользуйся им и развивай.
     
  6. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    И опять этот вопрос...
    /showthread.php?t=151017
     
  7. Zuldrak

    Zuldrak New Member

    Joined:
    15 Jan 2010
    Messages:
    45
    Likes Received:
    1
    Reputations:
    0
    Я переделал с делфи на с и че т не фига, возвращает ошибку 302
     
  8. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    RTFM по ответам сервера!
     
  9. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    я когда то на delphi писал функцию))) может чем поможет)) тока надо исправить процедуру в idcookiamanager.pas

    PHP:
    procedure TVKClass.Login;
    var
     
    PageText TStringList;
     
    PostData TStringList;
     
    TempStr  string;
     
    I        Integer;
    begin
        
    Создаем объекты в памяти }
         
    HTTP := TidHTTP.Create(nil);
         
    Cookie := TidCookieManager.Create(HTTP);
         
    PageText := TStringList.Create;
         
    PostData := TStringList.Create;

        { 
    Задаем нужные параметры }
         
    HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 MRA 5.6 (build 03278) Firefox/3.5.7 sputnik unknown';
         
    HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
         
    HTTP.Request.AcceptLanguage := 'ru,en-us;q=0.7,en;q=0.3';
         
    HTTP.Request.Connection := 'keep-alive';
         
    HTTP.Request.Referer := 'http://vk.com/login.php';
         
    HTTP.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8';
         
    HTTP.Request.AcceptCharset := 'windows-1251,utf-8;q=0.7,*;q=0.7';
         
    HTTP.CookieManager := Cookie;
         
    HTTP.AllowCookies := True;
         
    HTTP.HandleRedirects := True;

        { 
    1. Запрос на страницу }
       If 
    FServerType stVK_COM Then
         HTTP
    .Post('http://vk.com/login.php'PostData)
       else 
    HTTP.Post('http://vkontakte.ru/login.php'PostData);  

        { 
    2. Формируем запрос }
         
    PostData.Add('act=login');
         
    PostData.Add('email=' femail);
         
    PostData.Add('pass=' fpass);

         
    PageText.Text := HTTP.Post('http://login.vk.com/'PostData);

         If 
    Pos('error'PageText.Text) <> 0 Then
         begin
           TriggerLogin
    ('Bad login or password');
         
    end else TriggerLogin('Succes login');


         For 
    := 0 To PageText.Count -do
         
    begin
           
    If Pos('id=' #39 + 's' + #39, PageText[I]) <> 0 Then
           
    begin
              TempStr 
    := PageText[I];
              
    TempStr := Copy(TempStrPos('value='TempStr) +7Length(TempStr));
              
    Delete(TempStrPos(#39, TempStr), Length(TempStr));
           
    end;
         
    end;

        { 
    3. Отсылаем ключ на сервер }
         
    PostData.Clear;
         
    PostData.Add('op=slogin');
         
    PostData.Add('s=' TempStr);

        If 
    FServerType stVK_COM Then
         PageText
    .Text := HTTP.Post('http://vk.com/login.php'PostData)
        else 
    PageText.Text := HTTP.Post('http://vkontakte.ru/login.php'PostData);

         
    PageText.Free;
         
    PostData.Free;
    end;

    ps

    это код из мокго компонента для вк. нужно исправить код немного...
     
  10. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    и обработку исключений добавить ;)