API:Создание учётной записи

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Account creation and the translation is 100% complete.

Other languages:
العربية • ‎български • ‎dansk • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎polski • ‎português • ‎română • ‎русский • ‎中文
Эта страница является частью документации по MediaWiki action API.

API действий MediaWiki

v · d · e

Вы можете создавать учётные записи, используя API. Эта новая учётная запись может быть вашей собственной, или вы можете создать её для кого-то другого, отправив ему по электронной почте случайно сгенерированный пароль. Создание учётных записей отражается в Special:log/newusers. Если вы уже вошли на сайт, при создании новой учётной записи будет в журнал будет записано и ваше текущее имя учётной записи.

Эта страница документирует API создания учётных записей для MediaWiki 1.27. Доступна также документация API для более ранних версий: Api:Account creation/pre-1.27Api:Account creation/pre-1.27

Создание учётной записи

Для создания аккаунта нужен токен, который может быть получен запросом tokensAPI:tokens.

Это действие реализует интерактивное создание учётной записи, которое может включать CAPTCHA, взаимодействие со сторонними сервисами, двухфакторную авторизацию и т.д. Поэтому то, какие конкретно поля должны быть указаны, может меняться в зависимости от настроек вики. Описание необходимых к заполнению полей следует получить, отправив запрос authmanagerinfoAPI:authmanagerinfo.

Простой пример

На вики без дополнительных расширений аутентификации необходимые поля могут включать username, password и retype, а также, возможно, email and realname.

Запрос, создающий учётную запись, нужно посылать с методом POST (GET запросы приведут к ошибке).

Создание учётной записи для другого участника

Если вы создаёте учётную запись для другого участника, вам нужно будет также указать причину действия в поле reason. Вы также можете использовать mailpassword вместо password and retype, чтобы ПО MediaWiki отправило новому участнику временный пароль по электронной почте.

Запрос, создающий учётную запись, нужно посылать с методом POST (GET запросы приведут к ошибке).

Сложный пример

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

Первый шаг: ответьте на капчу и выберите аутентификацию посредством OpenID.

От клиента следует ожидать, что он перенаправит браузер пользователя на предоставленную в параметре redirecttarget цель перенаправления.

Провайдер OpenID произведёт аутентификацию и перенаправит на страницу вики Special:OpenIDConnectReturn, которая произведёт валидацию ответа OpenID и перенаправит на цель createreturnurl, предоставленную в первом POST-запросе к API, с добавленными параметрами code и state.

В этот момент клиент обратно получает управление процессом и производит свой следующий запрос API.

Второй шаг: действия после настройки OpenID.

Теперь клиенту следует указать призвать пользователя к созданию новой учётной записи в своём приложении для двухфакторной аутентификации и введению текущего кода, или же позволить пользователю пропустить настройку двухфакторной аутентификации. Предположим, что пользователь всё-таки настроил ДФА.

Третий шаг: настройка двухфакторной аутентификации.

Создание учётной записи наконец-то завершено.

Если в каком-либо месте произойдёт ошибка создания учётной записи, будет возвращён ответ со статусом FAIL, также будет указано сообщение message, которое следует показать пользователю.

Отключение

Чтобы отключить конкретно эту функцию API, вставьте следующую строку в свой файл конфигурации MediaWiki:

$wgAPIModules['createaccount'] = 'ApiDisabled';

См. также




action=createaccount (create)

(main | createaccount)
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Create a new user account.

The general procedure to use this module is:

  1. Fetch the fields available from action=query&meta=authmanagerinfo with amirequestsfor=create, and a createaccount token from action=query&meta=tokens.
  2. Present the fields to the user, and obtain their submission.
  3. Post to this module, supplying createreturnurl and any relevant fields.
  4. Check the status in the response.
    • If you received PASS or FAIL, you're done. The operation either succeeded or it didn't.
    • If you received UI, present the new fields to the user and obtain their submission. Then post to this module with createcontinue and the relevant fields set, and repeat step 4.
    • If you received REDIRECT, direct the user to the redirecttarget and wait for the return to createreturnurl. Then post to this module with createcontinue and any fields passed to the return URL, and repeat step 4.
    • If you received RESTART, that means the authentication worked but we don't have a linked user account. You might treat this as UI or as FAIL.
Parameters:
createrequests

Only use these authentication requests, by the id returned from action=query&meta=authmanagerinfo with amirequestsfor=create or from a previous response from this module.

Separate values with | or alternative. Maximum number of values is 50 (500 for bots).
createmessageformat

Format to use for returning messages.

One of the following values: html, wikitext, raw, none
Default: wikitext
createmergerequestfields

Merge field information for all authentication requests into one array.

Type: boolean (details)
createpreservestate

Preserve state from a previous failed login attempt, if possible.

If action=query&meta=authmanagerinfo returned true for hasprimarypreservedstate, requests marked as primary-required should be omitted. If it returned a non-empty value for preservedusername, that username must be used for the username parameter.

Type: boolean (details)
createreturnurl

Return URL for third-party authentication flows, must be absolute. Either this or createcontinue is required.

Upon receiving a REDIRECT response, you will typically open a browser or web view to the specified redirecttarget URL for a third-party authentication flow. When that completes, the third party will send the browser or web view to this URL. You should extract any query or POST parameters from the URL and pass them as a createcontinue request to this API module.

createcontinue

This request is a continuation after an earlier UI or REDIRECT response. Either this or createreturnurl is required.

Type: boolean (details)
createtoken

A "createaccount" token retrieved from action=query&meta=tokens

This parameter is required.
*
This module accepts additional parameters depending on the available authentication requests. Use action=query&meta=authmanagerinfo with amirequestsfor=create (or a previous response from this module, if applicable) to determine the requests available and the fields that they use.