Ку всем, не работает авторизация Вконтакте Весь код: Code: procedure TForm1.sButton1Click(Sender: TObject); //кнопка старт var PageProfile:string; begin IdHTTP1.HandleRedirects:=true; try PageProfile:=IdHTTP1.Get('http://vkontakte.ru/login.php?email='+sEdit1.Text+'&pass='+sEdit2.Text); except end; if Pos('logout', PageProfile)<>0 then sMemo1.Lines.Add('Авторизация удалась') else sMemo1.Lines.Add('Авторизация не удалась'); end; end. Что нетак? Очень нужна Ваша помощь
Маловато параметров не? Мб авторизация выполняется на https://login.vk.com? А переадресация включена? А юзерагент актуален? Кукисы подключены? А аа аа аа А ГУГЛ поюзать не пробовали ?
гугл юзал и много всего искал, IdHTTP1.AllowCookies:=true; //разрешить куки IdHTTP1.HandleRedirects:=false; //переадресация что за юзерагент?
слышал, и просматривал запрос, вот что показывает:http://vkontakte.ru/login.php?act=slogin&al_frame=1&hash=06899d0df17b3eb579742be98fa3254c&s=1
Это уже редирект. Запрос с передаваемыми параметрами идет на https://login.vk.com. Все параметры необходимые для успешной авторизации видны на скрине.
если не сложно напишите пожалуйста какие именно кроме http://login.vk.com/?act=login, и код на UserAgent
Думаю, рановато Вам пока авторизацию делать . Лучше почитайте про http протокол, запросы, заголовки. Все станет намного понятней. Параметры, которые передаются скрипту методом Post отображены слева внизу: Code: act q al_frame ... и тд. В правой части приведены значения этих параметров. Вот когда Вы напишите программу таким образом, что сниффер будет показывать практически одинаковый результат при открытии страницы в браузере и при использовании Вашей программы, вот тогда всё заработает
Поставлю вопрос чуть по другому, есть сайт где стоит Авторизация через Вконтакте и есть реферальная ссылка, нужно когда вводиш реферальную ссылку и нажимаеш войти через Вконтакте, происходила переадресация и рефералы засчитывались..
Вот код: Code: var data:tstringlist; PageProfile:string; error:boolean; begin IdHTTP1.AllowCookies:=true; IdHTTP1.HandleRedirects:=false; data:=tstringlist.create; data.Add('email=ваш_логин'); // логин для авторизации data.Add('pass=пароль'); // пароль для авторизации 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 PageProfile:=IdHTTP1.Post('http://vkontakte.ru/login.php', data); except end; Memo1.Lines.Add('Авторизация удалась'); end else Memo1.Lines.Add('Авторизация не удалась'); Data.Free; end; Когда врубаю, выскакивает ошибочка:
Потому, что http://login.vk.com/?act=login это не правильный адрес. Вернее не правильный протокол, нужно использовать https://login.vk.com/?act=login, что влечет за собой подключение SSLIOHandlerSocket, плюс ко всему параметры, которые передаются - некорректны.
Тс редирект раньше вкл... На скрине редирект после первого запроса. У тс исключение из-за редиректа. 302 код редиректа, за это я инди и не люблю исключение при ответе от сервера не 200 или 302, есть некоторые сайты которые на постой ответ дают не 200 при этом сам документ будет в норм состояни.. Code: IdHTTP1.AllowCookies:=true; IdHTTP1.HandleRedirects:=true; try PageProfile:=IdHTTP1.Post('http://login.vk.com/?act=login', data); //Тут редирект происходит end;
Проснифайте запрос и вписывайте в программу те параметры, которые будут отображены в снифере. Кстати, значение для параметра ip_h нужно предварительно спарсить. Да здесь на форуме эта тема подымалась неоднократно. Воспользуйтесь поиском.