MediaWiki clientlogin将不接受logintoken

问题描述 投票:0回答:1

我正在尝试对MediaWiki api使用clientlogin操作,如下所示。

[当我尝试发出请求时,如api所说的

/ wiki / api.php?action = clientlogin&format = json&logintoken = {token}&username = {username}&password = {password}

我收到logintoken需要在请求正文中的错误。这使我转到下面的结果代码,但现在返回错误,指出需要设置logintoken。任何线索,这是为什么?

旁注:我已经在通过输入映射传递的另一个函数中检索了用户名和密码。

async function requestLogin(loginToken: string, inputs: {[key:string]: string}) {

    let loginRequest: string = "?action=clientlogin&format=json";
    let loginData: {[key:string]: string} = {
        'logintoken': loginToken
    };
    for (let key in inputs) {
        // place the key/value into the request
        loginData[key] = inputs[key];
    }

    console.log(loginData);
    const login = bent(state.url, 'POST', 'json');
    let loginResponse = await login(loginRequest, loginData);
    if ("error" in loginResponse) {
        console.log(loginResponse["error"]);
        console.log(loginResponse["error"]["info"]);
    } else {
        // Successfully logged in :)
        console.log(loginResponse);
    }
}
typescript mediawiki
1个回答
0
投票

似乎您正在将主体作为JSON发送。传统的MediaWiki API可以采用application/x-www-form-urlencodedmultipart/form-data格式的数据。 (即最简单的方法是将查询字符串从URL移到正文。)有一个REST API,它接受JSON输入,但是它是新的,没有充分的文档说明,并且在此时仅提供有限的功能集。

另外,您确定需要action=clientlogin吗?它是一个API,旨在在客户端上构建交互式登录界面。它不像人们通常认为的那样起作用。 action=login可能是更好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.