2014-01-20 3 views
0

После первого запроса POST я получаю результат «NeedToken», а затем во втором запросе POST я передаю токен и sessionid в качестве параметров. Вот мой код Javascript:Media wiki second POST по-прежнему возвращает результат NeedToken

function wiki_auth(login, pass, ref){ 
    $.post(ref+'api.php?action=login&lgname=' + login + 
      '&lgpassword=' + pass + '&format=json', function(data) { 
     if(data.login.result == 'NeedToken') { 
      $.post(ref+'api.php?action=login&lgname=' + login + 
        '&lgpassword=' + pass + '&lgtoken='+data.login.token+'&format=json&sessionid='+data.login.sessionid+'&lgdomain='+ref, 
        function(data) { 
       if(!data.error){ 
        if (data.login.result == "Success") { 
         document.location.href=ref; 
        } else { 
         console.log('Result: '+ data.login.result); 
        } 
       } else { 
        console.log('Error: ' + data.error); 
       } 
      }); 
     } else { 
      console.log('Result: ' + data.login.result); 
     } 
     if(data.error) { 
      console.log('Error: ' + data.error); 
     } 
    }); 
} 

Я не уверен, что мне нужно передать что-то еще.

ответ

0

Вам нужно будет на самом деле POST the parameters as dataкорпусе HTTP-запроса), а не добавлять их к параметрам GET в URL-адресе. Использовать

$.post(ref+'api.php?action=login&format=json', { 
    lgname: login, 
    lgpassword: pass, 
    lgtoken: data.login.token, 
    sessionid: data.login.sessionid, 
    lgdomain: ref 
}, function(data) { … }); 
+0

Нет никакого различия с вашим кодом. Результат второго поста все равно «NeedToken». Может быть, cookie не обрабатывается должным образом? – Costas

+0

Хм, он должен работать. Куки-файлы должны автоматически обрабатываться браузером (и поскольку это 'HttpOnly', вы никак не можете манипулировать им). Не могли бы вы отредактировать свой вопрос и отправить HTTP-запрос, как показано в сетевом инспекторе devtools? – Bergi

+0

Оказывается, мне пришлось обрабатывать файлы cookie вручную, но также иметь параметры в теле запроса. – Costas