Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

idhttp json - авторизация qiwi


Djonik ©   (2015-06-22 10:13:00) 

Народ, помогите авторизоватся в qiwi через idhttp

в свойствах idhttp -
accept: application/json, text/javascript, */*
charset: windows-1251,utf-8;q=0.7,*;q=0.3
encoding: gzip,deflate
language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
content-type: application/x-www-form-urlencoded
reffer: https://w.qiwi.ru/login.action
useragent: User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

На форме -
IdHttp
IdSSLIOHandlerSocketOpenSSL
IdCompressorZLib
IdCookieManager

Пробую авторизоваться:

Params := TStringList.Create;
Params.Add('login=телефон');
Params.Add('password=пароль');
answer := IdHttp1.Post(Edit_Url.Text, Params); // https://w.qiwi.com/report/list.action?type=1
Params.Free;
Memo_Answer.Text := Answer;

Так ничего не получается.
Посмотрел, что там в JSON должен приходить ответ, который содержит поле - TOKEN

Вопрос 1:
т.е. я правильно понимаю: надо после первого запроса, получить ответ, добавить токен, и еще раз отослать пост?

Вопрос 2:
Как получить JSON?

Вытащить из ответа, вроде так(вопрос именно - как получить json при моем post запросе выше):

json :=TJSONObject.ParseJSONValue(answer) as TJSONObject;
if Assigned(json) then
begin
for I := 0 to json.Size-1 do
   Memo_Answer.Lines.Add(json.Get(i).JsonString.Value);
end
 else
Сaption := 'no';


HF-Trade   (2015-06-23 12:37:00) [1]

К выше написанному -
Ниже код на php. Проверено. Работает. С него и переписывал на инди.
Собсно, вопрос -
Почему инди в запросе баланса(код выше), присылает не то, что нужно?


HF-Trade   (2015-06-22 22:16:00) [2]

Я загуглил, и взял пример с php + курл.
Переписал... ну как то так.
А с самим киви не работал никогда. Мб и есть так апи какой то, но они вроде для магазинов его суют, а так то, только снифером каким нить посмотреть, что куда..
Хотя полезность.


Игорь Шевченко   (2015-06-22 22:13:00) [3]


> я правильно понимаю


а что, система настолько закрытая, что информацию по работе с ней надо на форумах искать ?


HF-Trade   (2015-06-22 22:02:00) [4]

Var
json   : TJSONObject;
answer : String;
stream : TStringStream;
Token : String;
begin
idhttp1.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');
stream:=TStringStream.Create('');
stream.WriteString('source=MENU&login=+номер_мобилы&password=пароль');
Answer := IdHttp1.Post(' https://qiwi.ru/auth/login.action', stream);
JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
IF Assigned(JSON) Then
 Begin
  Token := JSON.ToString;
  Delete(Token, 1, POS('"token":"', token) + 8);
  Delete(Token, POS('"', Token), Length(Token));
  // Можно конечно и как JSON вытащить data - token
  stream.WriteString('&loginToken=' + Token);
  Answer := IdHttp1.Post(' https://qiwi.ru/auth/login.action', Stream);
  JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
  IF Assigned(JSON) Then
   Begin
     Stream.Clear; // Больше вроде не нужно
     IdHttp1.Request.Referer := ' https://qiwi.ru/main.action';
     Answer := IdHttp1.Post(' https://w.qiwi.com/person/state.action', Stream);
     JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
     IF Assigned(JSON) Then
      Memo1.Lines.Add(json.ToString)
     Else
      Caption := 'no json';
   End
    Else
     Caption := 'no json';
 End
Else
 Caption := 'no json';`
Stream.Free;



Как то так...
Авторизация проходит, ответ верный -

{"code":{"value":"7","_name":"TOKEN"},"data":{"parameters":null,"token":"6 754631581734996392","url":null},"message":null,"messages":null}
{"code":{"value":"0","_name":"NORMAL"},"data":null,"message":null,"messages":nul l}

Но потом, не могу получить данные - как я понял, должен прийти баланс и т.п. Я так понимаю они тут должны быть. Инфу брал с форумов, сам фидлером не смотрел, что там...
{"code":{"value":"11","_name":"SESSION"},"data":null,"message":null,"messa ges":null}

P.S. Если кто доделает - отпишите, как там баланс дернуть


Наверх

Титульная страница Поиск, карта сайта Написать письмо