API:Login/ru

API движка MediaWiki может требовать, чтобы ваше приложение или клиент предоставили данные прошедшего аутентификацию пользователя в целях успешного выполнения операции. Стандартный способ пройти аутентификацию включает выполнение запроса на действие входа в учётную запись, после запроса — построение куки, а затем подтверждение входа путём повторной отправки предыдущего запроса вместе с полученным токеном подтверждения.

Входить ли в учётную запись
Вашему клиенту потребуется войти в учётную запись MediaWiki, если:


 * ему нужно получить информацию или исполнить действие, разрешённое только участникам с определёнными правами
 * он выполняет большие запросы поиска, которые были бы неэффективны без использования доступным только привилегированным участникам больших (ударение на О) пределов на количество результатов за запрос

На вики, разрешающих анонимное редактирование, возможно редактировать через API без входа в учётную запись, но это действие всё равно крайне рекомендуется выполнять. On private wikis, logging in is required to use any API functionality.

If your client is written in JavaScript, it'll usually act with the credentials of the user who's running it. В этом случае вам не потребуется входить в учётную запись через API сетевых служб: вам всего лишь потребуется убедиться, что пользователь вошёл в учётную запись через веб-интерфейс.

Application-specific user accounts
Если вы не хотите, чтобы ваше приложение входило в вашу учётную запись, вы можете создать отдельную учётную запись специально для вашего приложения. Это особенно важно, если ваше приложение:


 * выполняет автоматизированные правки или другие операции в большом количестве.
 * вызывает большие или ресурсозатратные информационные запросы.

При наличии отдельной учётной записи, изменения, произведённые вашим приложением, легко отследить, а к учётной записи приложения можно применить особые группы прав (обычно группу ботов). Некоторые вики устанавливают внутреннюю политику автоматического редактирования и/или процедуру обработки запросов присвоения прав бота.

При входе в учётную запись создаются несколько токенов, необходимых для распознавания вошедшего пользователя сервером. В каждом вызове api.php, куки, установленная этим запросом, должна быть передана. Куки действительны примерно в течение месяца, и вам следует проверять необходимость войти в учётную запись на основании обнаружения выхода из неё (то есть, например, не входа в неё один раз за сеанс). Вы можете проверить это в любом запросе, использовав общий параметр.

Как войти в учётную запись
Вход в учётную запись через API требует отправку запроса на вход и построения куки (многие платформы построят куки автоматически). В MediaWiki 1.15.3+ необходимо подтвердить вход, повторно отправив запрос входа вместе в полученным токеном.

Структура запроса на вход
Тело POST может быть пустым. Запрос также вернёт куки сеанса в заголовке HTTP, которую вам придётся указать во втором запросе, если ваша платформа не делает этого автоматически. Параметр sessionid добавлен в MediaWiki 1.17.

You might need to add the query parameter, containing your domain name for authentication, if you're using an authentication plug-in like Extension:LDAP Authentication.

Confirm token
If the response to the above query was  instead of , you can skip this step. (This extra step was added in MediaWiki 1.15.3.) In MediaWiki 1.15.4, first phase of login in ApiLogin.php is broken, so login/sessionid parameter is not returned, thus token confirmation is impossible. Apply ApiLogin.php file from MediaWiki 1.15.5 to your installation as a quick workaround while you plan your upgrade to 1.15.5. ApiLogin.php from MediaWiki 1.16+ is incompatible with MediaWiki 1.15.3+.

Handle cookies
A successful  request will set cookies needed to be considered logged in. Many frameworks will handle these cookies automatically (such as the cookiejar in cURL). If so, by all means take advantage of this. If not, the most reliable method is to parse them from the HTTP response's Set-Cookie headers.

If this is not possible either, it is possible to construct the appropriate cookies from the various values returned by the  call, but this is not recommended as the necessary cookies may be changed without warning (e.g. something as simple as changing  would require changes to your manual cookie creation code).

When CentralAuth is enabled, as on Wikimedia wikis, the example above will not only log you in to a single domain, but also provide you with three centralauth cookies in the Set-Cookie response headers. To use these, duplicate those cookies (i.e. cookies whose names are prefixed with "centralauth_") and set the domain field of the new cookies to the new domain you'd like to log in at. Once this is done, any GET/POST request to this new domain will (assuming that the user has a SUL/global account) be answered with a reply containing Set-Cookie headers/Cookies specific to that domain.

Ошибки
Errors are returned in the result field. Possible values include:

Регулирование
For security reasons, this module is throttled. By default, you get to login 5 times in 300 seconds, but this may vary from one wiki to another. When you exceed this limit, your login will fail (even if it's otherwise correct) with  and the number of seconds you need to wait in the   field.

Примеры

 * Example login codes in PHP:
 * Example login (requires Snoopy)
 * Example login and navigate (using only file_get_contents)
 * Example login (using cURL) - no Snoopy required
 * Example login code in JS (using JQuery)
 * Example login code in Python