Просмотр полной версии : Авторизация вконтакте
Не подкинет кто нить пример авторизации с idhttp , а то по многому пробывал и чет не катит,желательно builder
Пробывал так
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
Правда на делфи, но думаю поможет. А вообще инди глючная фигня.
Точно рабочий? А то щас переведу и опять облом))
ChinaTown
08.04.2010, 20:34
Ну ты же хочешь наверно быть программистом или как минимум написать чтобы работало.
Вот на это нужен мозг. Пользуйся им и развивай.
M_script_
09.04.2010, 01:20
И опять этот вопрос...
http://forum.antichat.ru/showthread.php?t=151017
Я переделал с делфи на с и че т не фига, возвращает ошибку 302
[stranger]
09.04.2010, 21:19
RTFM по ответам сервера!
RedFern.89
10.04.2010, 15:27
я когда то на delphi писал функцию))) может чем поможет)) тока надо исправить процедуру в idcookiamanager.pas
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 I := 0 To PageText.Count -1 do
begin
If Pos('id=' + #39 + 's' + #39, PageText[I]) <> 0 Then
begin
TempStr := PageText[I];
TempStr := Copy(TempStr, Pos('value=', TempStr) +7, Length(TempStr));
Delete(TempStr, Pos(#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
это код из мокго компонента для вк. нужно исправить код немного...
и обработку исключений добавить ;)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot