我正在学习flutter和requests,所以如果这是一个简单的错误,请原谅我。我正在尝试使用客户端登录api让客户端登录到mediaiwki实例。我可以成功获取登录令牌,但当我尝试登录时,提示{"error":{"code":"badtoken","info":"Invalid csrf token.","*":“。我正在使用的登录接口如下所示。https://www.mediawiki.org/wiki/API:Login#Method_2._clientlogin感谢您的帮助。
要成功获取登录令牌,我使用
_fetch_login_token() async {
Map<String, String> headers = {"Content-type": "application/json"};
Map<String, String> body = {
'action': "query",
'meta': "tokens",
'type': "login",
'format': "json"
};
Response response = await post(
url,
body: body,
);
//print(response);
// int statusCode = response.statusCode;
// print(statusCode);
var decoded = jsonDecode(response.body);
print(decoded);
var jsonsData = response.body; // toString of Response's body is assigned to jsonDataString
var data = jsonDecode(jsonsData);
var token=data['query']['tokens']['logintoken'];
return _makePostRequest(token);
}和失败的登录,如下所示
Map<String, String> body = {
'action': "clientlogin",
'username': username,
'password': password,
'loginreturnurl': url,
'logintoken': loginToken,
'format': "json"
};
Response response = await post(
url,
body:body,
);发布于 2020-12-22 20:13:22
我解决了problem.For未来的参考,我已经下载了音频包,并添加了拦截器和cookie管理器来持久化cookie。
https://stackoverflow.com/questions/65303820
复制相似问题