Невозможно получить токен редактирования для API MediaWiki - PullRequest
2 голосов
/ 10 января 2012

Я не могу получить токен редактирования для MediaWiki:

Запрос

POST /w/api.php HTTP/1.1
Host: en.wikipedia.org
Accept: */*
User-agent: Sbose7890
Content-Length: 59
Content-Type: application/x-www-form-urlencoded

action=query&prop=info&intoken=edit&titles=Java&format=json 

Ответ

HTTP/1.0 200 OK
Date: Tue, 10 Jan 2012 09:14:03 GMT
Server: Apache
X-Content-Type-Options: nosniff
Cache-Control: private
Vary: Accept-Encoding
Content-Length: 209
Content-Type: application/json; charset=utf-8
X-Cache: MISS from sq34.wikimedia.org
X-Cache-Lookup: MISS from sq34.wikimedia.org:3128
X-Cache: MISS from sq59.wikimedia.org
X-Cache-Lookup: MISS from sq59.wikimedia.org:80
Connection: close

{
  "query": {
    "pages": {
      "69336": {
        "starttimestamp": "2012-01-10T09:14:03Z",
        "lastrevid": 469959190,
        "touched": "2012-01-07T11:38:04Z",
        "pageid": 69336,
        "title": "Java",
        "edittoken": "+\\",
        "ns": 0,
        "length": 37800,
        "counter": ""
      }
    }
  }
}

Я попробовал его с помощью hurl.it .

Я также вошел в систему.

Ответы [ 2 ]

4 голосов
/ 10 января 2012

Вы получаете токен редактирования: +\. Это один для пользователей, и он всегда один и тот же. См. mw: Руководство: Изменить токен , а также ревизии, связанные с ним.

Проблема в том, что вне зависимости от вашего логина, Hurl должен войти в систему. Он должен был бы отправить действительный файл enwiki_session, например, ваш. Но не публикуйте свою, все могут войти с ней!

1 голос
/ 16 января 2012

Короче говоря, не используйте API MediaWiki , есть клиенты для каждого мыслимого языка , которые позаботятся обо всех этих утомительных вещах для вас. Например, если вы используете Ruby, вот весь код MediaWiki :: Gateway , который необходим для входа и редактирования статьи:

mw = MediaWiki::Gateway.new(your-wiki)
mw.login(user, pw)
mw.create("Article", "Hello world")
...