Media wiki第二个POST仍然返回NeedToken结果

时间:2014-01-20 15:54:33

标签: javascript mediawiki mediawiki-api

在第一次POST请求后,我得到“NeedToken”结果,然后在我的第二个POST请求中,我将令牌和sessionid作为参数传递。这是我的Javascript代码:

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);
        }
    });
}

我不确定是否需要传递其他内容。

1 个答案:

答案 0 :(得分:0)

您需要实际POST the parameters as data(在HTTP请求的正文中),而不是将它们附加到网址中的GET参数。使用

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