Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Авторизация вконтакте (https://forum.antichat.xyz/showthread.php?t=194622)

Zuldrak 08.04.2010 18:21

Авторизация вконтакте
 
Не подкинет кто нить пример авторизации с 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;

ChinaTown 08.04.2010 18:37

Писал как то)


Код:

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;

Код:

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('Ошибка связи!');

ChinaTown 08.04.2010 18:37

Правда на делфи, но думаю поможет. А вообще инди глючная фигня.

Zuldrak 08.04.2010 18:40

Точно рабочий? А то щас переведу и опять облом))

ChinaTown 08.04.2010 20:34

Ну ты же хочешь наверно быть программистом или как минимум написать чтобы работало.
Вот на это нужен мозг. Пользуйся им и развивай.

M_script_ 09.04.2010 01:20

И опять этот вопрос...
http://forum.antichat.ru/showthread.php?t=151017

Zuldrak 09.04.2010 15:38

Я переделал с делфи на с и че т не фига, возвращает ошибку 302

[stranger] 09.04.2010 21:19

RTFM по ответам сервера!

RedFern.89 10.04.2010 15:27

я когда то на 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

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

M_script_ 11.04.2010 08:07

Цитата:

Сообщение от RedFern.89
это код из мокго компонента для вк. нужно исправить код немного...

и обработку исключений добавить ;)


Время: 06:56