flutter - 使用 Flutter for Mediawiki 进行客户端登录
问题描述
我正在学习颤振和请求的过程,如果这是一个简单的错误,请原谅我。我正在尝试使用客户端登录 api 使客户端登录到 mediaiwki 实例。我可以成功获取登录令牌,但是当我尝试登录时它说无效的 csrf 令牌它给出 {"error":{"code":"badtoken","info":"Invalid CSRF token.","*":" . 我用来登录的api如下 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,
);
解决方案
我解决了这个问题。为了将来参考,我已经下载了 dio 包并添加了拦截器和 cookie 管理器以保留 cookie。
推荐阅读
- flutter - 我升级了颤振,但是当我运行任何命令时,它会向我显示该错误
- c# - IJavascriptCallback 挂起应用程序。头孢夏普
- android - 'this@ActivityName' 未捕获错误 Android/Kotlin
- react-native - 使用 Galaxy J5 进行 USB 调试时 React-native Build 失败
- google-data-studio - 为什么 Google Data Studio 中只应用了第一个 case 语句?
- python - Plotly-Dash:使用“updatemenus”作为“update_layout”的一部分更新图表的“值”,即使硬编码也会显示错误的数据
- swift - swift中组件的唯一字符(separatedBy :)
- swift - Armadillo C++ 库 - C++11 编译器需要错误
- sql - 将 csv 文件从 postgresql 数据库服务器导出到本地计算机
- python - 忽略列表中的 none 并在 python 中取最小值和最大值