我使用的是MediaWiki Action API,在这里我使用OAuth2授权流来获取访问令牌。
上传镜像需要CSRF令牌。我通过向https://commons.wikimedia.org/w/api.php?action=query&meta=tokens&format=json发出post请求来获取令牌,并在报头中包含身份验证码。这样就行了,我得到了一个包含CSRF令牌的响应:
{
"batchcomplete": "",
"query": {
"tokens": {
"csrftoken": "516091e04d05c9ae2c7bca4727c071fb615ee122+\\"
}
}
}然后,我使用这个令牌并立即检查它的有效性,在主体中使用获得的令牌向https://commons.wikimedia.org/w/api.php?action=checktoken&type=csrf&format=json发出post请求(根据api文档的要求)。这些请求彼此之间在不到一秒的时间内发生。但是,响应总是“无效”:
{
"checktoken": {
"result": "invalid",
"generated": "2021-10-07T12:07:20Z"
}
}我正在使用Dart/Flutter btw,但我怀疑这是问题所在。
发布于 2021-10-21 12:40:17
经过很长一段时间,我终于找到了答案,答案再简单不过了:
检查令牌操作仍然需要标头中的oAuth 2访问令牌。包括这一点,一切都像它应该的那样工作。我希望这至少能帮助其他人。
https://stackoverflow.com/questions/69480938
复制相似问题