2017-01-14 2 views
0

Используя Mediawiki v.1.28, я могу создать учетную запись, но мне нужно сохранить адрес электронной почты для пользователя во вновь созданной учетной записи. Документация (найдено here) указывает на возможность создания счета с username, password, email и realname, но только username и password сохраняются при попытке.Как создать учетную запись wikimedia с адресом электронной почты, используя mediawiki api

Документы с песочницей API (найдено here), похоже, предлагают многоступенчатый подход, но я не смог понять это.

Большое спасибо всем, кто может помочь, указав шаги (в примерах http-запросов), которые покажут, как создать учетную запись с сохраненным адресом электронной почты.

+0

Существует три этапа: 1) получить токен создания учетной записи через 'action = query & meta = tokens', 2) запросить API через' action = query & meta = authmanagerinfo', чтобы узнать, какие поля необходимы для входа (для Например, сайт может использовать некоторый метод проверки подлинности, не основанный на пароле, и в этом случае не будет 'password' /' retype'), создайте форму и покажите ее пользователю, 3) отправьте значения формы через 'action = createaccount'. (Шаги 2 и 3 могут повторяться несколько раз, если сам процесс создания учетной записи занимает несколько шагов. Это маловероятно, но возможно.) ... – Tgr

+0

... Если вы точно знаете, какие поля необходимы для создания учетной записи (например, потому что вы пишете код для вики, который вы контролируете), шаг 2 можно пропустить. – Tgr

ответ

0

После некоторых проб и ошибок я понял, как это сделать. Я обнаружил, что различные создание аккаунта методы/формы могут быть объединены в один запрос (с помощью POST), например так:

/api.php? 
action=createaccount 
&format=json 
&createrequests=MediaWiki%5CAuth%5CPasswordAuthenticationRequest%7CMediaWiki%5CAuth%5CUserDataAuthenticationRequest%7CMediaWiki%5CAuth%5CCreationReasonAuthenticationRequest 
&createreturnurl=http%3A%2F%2Fexample.org%2F 
&createtoken=fd4022e23f592fe3563693606f078a20587bc7d5%2B%5C 
&username=testuser 
&password=test 
&retype=test 
&[email protected] 
&realname=Test+User 
&reason=Added+via+API 

Поле createrequests представляет собой список маркеров (представляющих Mediawiki модули?) Соединены вместе с трубой ('|'), каждый из которых имеет соответствующие поля, которые могут быть отправлены в запросе. Для моего примера выше я включил токен MediaWiki\Auth\UserDataAuthenticationRequest в этот список, который позволяет отправлять поля email и realname; в том числе MediaWiki\Auth\PasswordAuthenticationRequest позволяет вам отправлять поля username, password и retype (password retype); и MediaWiki\Auth\CreationReasonAuthenticationRequest позволяет вам отправить поле reason (для создания учетной записи).

+0

Обычно вам не нужно указывать 'createrequests'. Это касается крайнего случая, когда вы не хотите отправлять определенное «AuthenticationRequest», даже если вы отправляете все свои обязательные поля. – Tgr

+0

Кажется, что для того, чтобы в почтовом ящике хранилось поле «email», соответствующее соответствующее значение ('MediaWiki \ Auth \ UserDataAuthenticationRequest') должно быть предоставлено в' createrequests'. Учетная запись может быть создана без 'createrequests', но тогда будут сохраняться только' username' и 'password'. – dhobbs

+0

'createrequests' должен по умолчанию выполнять все запросы. Если это не так, вы должны указать ошибку. – Tgr

Смежные вопросы