在第一次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);
}
});
}
我不确定是否需要传递其他内容。
答案 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) { … });