API:Login/uk

The MediaWiki API may require your application or client to provide authenticated user credentials to the API in order to complete an operation successfully. As of MediaWiki 1.27, there are two API actions used to authenticate:  and.

Bots and other non-interactive applications should generally use owner-only OAuth consumers when available to authenticate as it is more secure, however bot passwords can be used with the  action as described on this page.

Interactive applications such as custom editors or patrolling applications that provide a service without intending to fully replace the website should generally also use OAuth for authenticating the tool, as it is easier and more secure, however the  action can be used if that is unavailable.

Interactive applications such as mobile apps that aim to completely replace access to the web-based user interface should use the  action to authenticate.

Whether to log in
Your client will need to log in to MediaWiki if:


 * it needs to obtain information or carry out an action that is restricted to users with certain rights
 * it is making large queries that would be inefficient without the higher per-request limits reserved for accounts with certain rights

On wikis that allow anonymous editing, it's possible to edit through the API without logging in, but it's highly recommended that you do log in. On private wikis, logging in is required to use any API functionality.

If your client is written in JavaScript running in the user's browser, it will usually act with the credentials of the user who's running it and so will not need to log in itself. In this case, you won't need to login using the web service API--you'll just need to ensure that the user has logged in through the web interface.

If your client is using OAuth or a similar mechanism, it will not need to explicitly log in as all OAuth requests are already authenticated.

Application-specific user accounts
Rather than having your application log in as yourself, you may want to create a separate user account just for your application. This is especially important if your application:


 * is carrying out automated editing or some other bulk operation.
 * invokes large or performance-intensive queries.

With a separate account, the changes made by your application can be easily tracked, and special rights (usually a "bot" user group) can be applied to the application's account. Some wikis have a policy related to automated editing, and/or a procedure for dealing with "bot" user group requests.

How to check if you're logged in
The login mechanism typically uses cookies to track the logged-in status of a session. Clients should check directly if they are logged in, rather than attempting to determine the status by examining the cookies or by blindly logging in whether or not it is required.

The recommended way to ensure that requests are logged in is to use the assert=user parameter accepted on all API calls. When this parameter is provided and the user is not logged in, an assertuserfailed error will be returned.

To directly check which user (if any) you are currently logged in as, use the query module.

Як увійти
У MediaWiki до версії 1.27 була доступна тільки дія, і всі клієнти повинні були користуватися нею. Починаючи з версії 1.27, дія  повинна використовуватися тільки в комбінації з паролями ботів, а інтерактивні додатки повинні використати.

Зауважте, що процедура входу й підтримання статусу "залогінено" вимагає коректної обробки HTTP-куків вашим клієнтом під час кожного запиту (зокрема отримання і використання токена автентифікації). Як правило, фреймворки й бібліотеки для HTTP-запитів роблять це за вас.

Дія
Щоб успішно увійти в обліковий запис, спершу необхідно отримати токен автентифікації. У MediaWiki 1.27 і наступних версіях цей токен треба отримати, використовуючи запит із параметром. У старших версіях замість цього потрібний POST-запит з дією.

У відповідь можуть бути включені інші поля, однак вони вважаються застарілими, і якщо вони є, то їх треба ігнорувати.

Після того, як токен отримано, вхід може продовжуватися.

У відповідь можуть бути включені інші поля, однак вони вважаються застарілими, і якщо вони є, то їх треба ігнорувати.

Поле result в отриманому виводі вказує, чи був успішним вхід в обліковий запис. У разі неуспішного входу результати можуть містити:


 * NeedToken if the lgtoken parameter was not provided or no session was active (e.g. your cookie handling is broken).
 * WrongToken if the supplied token was not a valid token.
 * Failed (since 1.27) if the login failed. A reason field will exist in the response containing and explanation of the failure.
 * Aborted (since 1.27) if the login using the main account password (rather than a bot password) cannot proceed because user interaction is required. The  action should be used instead.
 * NoName (before 1.27) if no lgname was provided.
 * Illegal (before 1.27) if the lgname is not a valid user name.
 * NotExists (before 1.27) if supplied user does not exist.
 * EmptyPass (before 1.27) if the supplied password is empty.
 * WrongPass or WrongPluginPass (before 1.27) if the password is incorrect.
 * CreateBlocked (before 1.27) if auto-creation of the account is required but is not possible.
 * Throttled (before 1.27) if login attempts from your IP have been throttled.
 * Blocked (before 1.27) if the user being logged in to is blocked and blocks prevent login on the wiki.
 * Aborted (before 1.27) if the login was aborted by an extension without further detail. A reason field may be present.

Дія
Ця дія реалізує інтерактивний процес входу в обліковий запис, у якому можуть бути задіяні CAPTCHA, взаємодії зі сторонніми службами автентифікації, двофакторна автентифікація тощо. Тому то, які конкретно поля вимагають, залежить від конфігурації вікі. Опис необхідних полів треба отримати з допомогою запиту.

На вікі без будь-яких особливих розширень автентифікації необхідні поля можуть включати username, password , і, можливо, rememberMe , так що запит на вхід в обліковий запис буде виглядати приблизно так:

On the other hand, a wiki with a CAPTCHA extension, an extension for authentication using OpenID Connect, and a two-factor authentication extension might have a more complicated authentication process.

Від клієнта буде очікуватися перенаправлення браузера користувача на надану ціль redirecttarget. The OpenID provider would authenticate, and redirect to Special:OpenIDConnectReturn on the wiki, which would validate the OpenID response and then redirect to the loginreturnurl provided in the first POST to the API with the code and state parameters added. У цей час клієнт знову отримує контроль над процесом і виконує наступний запит до API.

Now the client needs to ask the user to check their two-factor authentication app for the current code, and submit that back to the server to continue the authentication process.

Процес автентифікації тепер успішно завершений.

If at any point authentication fails, a response with status FAIL will be returned, along with a message to display to the user.

In certain cases it's possible to receive a RESTART response, for example if the OpenID Connect extension had no mapping for the OpenID account to any local user. In this case the client might restart the login process from the beginning or might switch to account creation, in either case passing the loginpreservestate or createpreservestate parameter to preserve some state.