отснифай то что шлет твоя программа.. на семерке делфи + 9 инди было так что для кукисов домен идет с точкой впереди аля .vkontakte.ru попробуй после того как послал постом данные по авторизации выполнить это ниже мне так на рутрекере помогло //add исправил чуток код)) не все скопировал сначала)
Code: IdHTTP1.AllowCookies:=true; data:=tstringlist.create; data.Add('email='+Edit1.Text); // логин для авторизации data.Add('pass='+Edit2.Text); // пароль для авторизации data.Add('expire='); data.Add('vk='); error:=false; try PageProfile:=IdHTTP1.Post('http://login.vk.com/?act=login', data); except error:=true; end; if not(error) then begin data.Clear; data.Add('s='+Copy(PageProfile, Pos('value', PageProfile)+7, 56)); data.Add('op=slogin'); data.Add('redirect=1'); data.Add('expire=0'); data.Add('to='); IdHTTP1.HandleRedirects:=true; try IdHTTP1.Post('http://vkontakte.ru/login.php', data); if IdHTTP1.ResponseCode=302 then PageProfile:=IdHTTP1.get('http://vkontakte.ru/'); except error:=true; end; if not(error) and (Pos('logout', PageProfile)<>0) then Memo1.Lines.Add('Авторизация удалась'); end; 100% работает
Code: Data :=tstringlist.Create; Data.Add('email='+edit1.text; Data.Add('pass='+edit2.text); Uns := form1.idhttp1.Post('http://login.vk.com/?act=login', Data); Uns := Copy(uns, 351, 56); if pos ('ВКонтакте | Вход',uns)<>0 then Form1.Memo2.lines.add(Log+'No valid') else begin form1.idcookiemanager1.AddCookie('remixsid=' + Uns + '; path=/;', 'vkontakte.ru'); form1.idcookiemanager1.AddCookie('remixchk=5; path=/;', 'vkontakte.ru'); data.Free; Конечно idhttp связываешь с idcookiemanager Ханредикт (или как-то так) = true; data:tstringlist; Ну а дальше сами всё поймете
Такая же хрень, вот код Code: var outfo:tstringlist; s,uns:string; begin outfo:=tstringlist.create; form1.idhttp1.get('http://vkontakte.ru/login.php?op=a_login_attempt'); outfo.add('act=login'); outfo.add('email='+form1.edit1.text); outfo.add('pass='+form1.Edit2.Text); try uns:=UTF8toANSI(form1.idhttp1.post('http://login.vk.com/', outfo)); s:=copy(uns,286,56); form1.idcookiemanager1.addcookie('remixsid='+s+';path=/;','vkontakte.ru'); finally if s <> '' then begin form1.label3.Caption:='Статус: подключились'; s:=form1.IdHTTP1.Get('/feed.php'); form1.Memo1.Lines.Add(s); end else form1.Label3.Caption:='Статус: ошибка'; end; end; Авторизуется, но куки не ставятся, пробовал совет в посте #25 - не помогло. з.ы - раньше помню по этому коду все было норм(и авторизация и с куками проблем не было), мб контакт что-нибудь поменял?
Фиксим idCookieManager.pas : Code: procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText, AHost: String); Var LDomain: String; begin ACookie.CookieText := ACookieText; if Length(ACookie.Domain) = 0 then LDomain := AHost else LDomain := ACookie.Domain; [COLOR=Green][B]if LDomain[1] = '.' then LDomain := Copy(LDomain, 2, Length(LDomain) - 1);[/B][/COLOR] ACookie.Domain := LDomain; if ACookie.IsValidCookie(AHost) then begin if DoOnNewCookie(ACookie) then begin FCookieCollection.AddCookie(ACookie); end else begin ACookie.Collection := nil; ACookie.Free; end; end else begin ACookie.Free; end; end; В авторизации ни чего не придумываем: Code: pd:=TStringList.Create; pd.Add('email='+login.Text); pd.Add('pass='+pass.Text); s:=http.Post('http://vkontakte.ru/login.php',pd); Indy 10.5.2 , усе работает на ура... Удачи.
Code: log:=copy(Form1.smemo1.lines[i],1,pos(':',Form1.smemo1.lines[i])-1); pass:=copy(Form1.smemo1.lines[i],pos(':',Form1.smemo1.lines[i])+1,20); Data :=tstringlist.Create; Data.Add('email='+log); Data.Add('pass='+pass); Uns := Form1.idHTTP1.Post('http://login.vk.com/?act=login', Data); data.Free; Uns := Copy(uns, 351, 56); if pos ('Контакте | Вход',uns)<>0 then Form1.IdCookieManager1.AddCookie('remixsid=' + Uns + '; path=/;', 'vkontakte.ru'); Form1.IdCookieManager1.AddCookie('remixchk=5; path=/;', 'vkontakte.ru'); ХардРедик:=true; Кукиманаджер связываем с IDhttp... Ну соответственно указываем все переменные