API:Hesap oluşturma

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:
Deutsch • ‎English • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎português • ‎română • ‎русский • ‎العربية • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어
MediaWiki version: 1.27
Bu sayfa, hesap oluşturma API'sini MediaWiki 1.27'den itibaren belgeler. API'nin önceki sürümlerde olduğu gibi dokümantasyonu burada bulabilirsiniz: Api:Account creation/pre-1.27 .

API dokümantasyonu


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.

Bir hesap oluşturma

Sürecin üç genel adımı vardır:

  1. Alanları API:Authmanagerinfo ve jetonu API:Tokens alın.
  2. Alınan token, kullanıcı bilgileri ve diğer alanlarla birlikte bir GÖNDERİ isteği gönderin ve URL'yi API'ye geri gönderin.
  3. Daha fazla bilgi sağlamak için daha fazla GÖNDERİ talebini içerebilecek olan yanıtla ilgilen.

Örnek 1: Özel kimlik doğrulama uzantıları olmadan bir wikide işlem yapma

Özel kimlik doğrulama uzantıları olmayan bir wiki oldukça kolay olabilir. Kodunuz hangi alanların gerekli olacağını biliyorsa, aramayı API:Authmanagerinfo olarak atlayabilir ve yalnızca hangi alanların gerekli olacağını varsayabilir (ör. Kullanıcı adı, şifre yeniden şifrelenmiş & şifre, e-posta, muhtemelen gerçek ad).

Bir başkası için bir hesap oluşturuyorsanız, GÖNDER isteğine reason parametresi ekleyerek bunun için bir neden belirtmeniz gerekir. MediaWiki'nin yeni kullanıcıya e-postayla geçici bir şifre göndermesini sağlamak için mailpassword yerine password ve retype yerine parametreler kullanabilirsiniz.

GÖNDER isteği

Yanıt

{
    "createaccount": {
        "status": "PASS",
        "username": "Zane"
    }
}

Örnek kod

Python

#!/usr/bin/python3

"""
    create_account.py

    MediaWiki API Demos
    Demo of `createaccount` module: Create an account on a wiki without the
    special authentication extensions

    MIT license
"""

import requests

S = requests.Session()

WIKI_URL = "http://dev.wiki.local.wmftest.net:8080"
API_ENDPOINT = WIKI_URL + "/w/api.php"

# First step
# Retrieve account creation token from `tokens` module

PARAMS_0 = {
    'action':"query",
    'meta':"tokens",
    'type':"createaccount",
    'format':"json"
}

R = S.get(url=API_ENDPOINT, params=PARAMS_0)
DATA = R.json()

TOKEN = DATA['query']['tokens']['createaccounttoken']

# Second step
# Send a post request with the fetched token and other data (user information,
# return URL, etc.)  to the API to create an account

PARAMS_1 = {
    'action': "createaccount",
    'createtoken': TOKEN,
    'username': 'your_username',
    'password': 'your_password',
    'retype': 'retype_your_password',
    'createreturnurl': WIKI_URL,
    'format': "json"
}

R = S.post(API_ENDPOINT, data=PARAMS_1)
DATA = R.json()

print(DATA)

PHP

<?php

/*
    create_account.php

    MediaWiki API Demos
    Demo of `createaccount` module: Create an account on a wiki without the
    special authentication extensions
    MIT license
*/

$wikiUrl = "http://dev.wiki.local.wmftest.net:8080";
$endPoint = $wikiUrl . "/w/api.php";

$createAccount_Token = getCreateAccountToken(); // Step 1
createAccount( $createAccount_Token ); // Step 2

// Step 1: GET request to fetch createaccount token
function getCreateAccountToken() {
	global $endPoint;

	$params1 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "createaccount",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params1 );

	$ch = curl_init( $url );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["createaccounttoken"];
}

// Step 2: POST request with the fetched token and other data (user information,
// return URL, etc.)  to the API to create an account
function createAccount( $createAccount_Token ) {
	global $endPoint, $wikiUrl;

	$params2 = [
		"action" => "createaccount",
		"createtoken" => $createAccount_Token,
		"username" => "your_username",
		"password" => "your_password",
		"retype" => "retype_your_password",
		"createreturnurl" => $wikiUrl,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	echo( $output );
}

JavaScript

/*  
    create_account.js
 
    MediaWiki API Demos
    Demo of `createaccount` module: Create an account on a wiki without the
    special authentication extensions

    MIT license
*/

var request = require('request').defaults({jar: true}),
    wikiUrl = "http://dev.wiki.local.wmftest.net:8080",
    endPoint = wikiUrl + "/w/api.php";

// Step 1: GET request to fetch createaccount token
function getCreateAccountToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "createaccount",
        format: "json"
    };

    request.get({ url: endPoint, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        createaccount(data.query.tokens.createaccounttoken);
    });
}

// Step 2: POST request with the fetched token and other data (user information,
// return URL, etc.)  to the API to create an account
function createaccount(createaccount_token) {
    var params_1 = {
        action: "createaccount",
        username: "your_username",
        password: "your_password",
        retype: "retype_your_password",
        createreturnurl: wikiUrl,
        createtoken: createaccount_token,
        format: "json"
    };

    request.post({ url: endPoint, form: params_1 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Start From Step 1
getCreateAccountToken();

MediaWiki JS

/*
	create_account.js

	MediaWiki API Demos
    Demo of `createaccount` module: Create an account on a wiki without the
    special authentication extensions

	MIT License
*/

var params = {
		action: 'query',
		meta: 'tokens',
		type: 'createaccount',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var token = data.query.tokens.createaccounttoken,
		params1 = {
			action: 'createaccount',
			username: 'your_username',
			password: 'your_password',
			retype: 'retype_your_password',
			createreturnurl: 'http:' + mw.config.get( 'wgServer' ),
			createtoken: token,
			format: 'json'
		};

	api.post( params1 ).done( function ( data ) {
		console.log( data );
	} );
} );

Örnek 2: CAPTCHA uzantılı bir wikide işlem yapma

Aşağıdaki ilk adımın iki adım olarak yapılabileceğini tercih edersiniz: biri API:Authmanagerinfo mevcut alanları almak, diğeri de API:Tokens gelenleri almak için.

İlk adım: API:Authmanagerinfo mevcut alanları ve API:Tokens belirteçleri al

İkinci adım: Bir hesap oluşturma belirteci, kullanıcı bilgileri ve dönüş URL’si ile birlikte bir gönderi isteği gönderin

Örnek Kod

Bu kod örneğinin, API:Authmanagerinfo ve API:Tokens isteklerini ayırdığını ve genellikle bir CAPTCHA olacağını ve başka bir komplikasyon olmayacağını varsaydığını unutmayın.

Örnek 3: Bir CAPTCHA, bir OpenID uzantısı ve iki faktörlü bir kimlik doğrulama uzantısı etkinleştirilmiş bir wikide hesap oluşturma

İlk adım: API:Authmanagerinfo mevcut alanları ve API:Tokens belirteçleri al

API:Authmanagerinfo ve API:Tokens değerinin alınması, önceki örnekte olduğu gibi büyük ölçüde aynıdır ve bu nedenle burada tekrar edilmez. API:Authmanagerinfo tarafından döndürülen isteklerin listesi hem CAPTCHA uzantısı hem de OpenID uzantısı için tanımları içerecektir.

İkinci adım: CAPTCHA'yı cevaplayın ve OpenID kimlik doğrulamasını seçin.

Müşterinin, kullanıcının tarayıcısını sağlanan redirecttarget adresine yönlendirmesi beklenir.

OpenID sağlayıcı kimliğini doğrular ve OpenID cevabını doğrular ve sonra kodunu içeren ilk GÖNDER'da sağlanan createreturnurl'ye yönlendirir ve wikideki Special:OpenIDConnectReturn'e yönlendirir.

Müşteri bu noktada sürecin kontrolünü ele geçirir ve bir sonraki API isteğini yapar.

Üçüncü adım: OpenID'den geri dönün.

Müşteri, code ve state API'ye geri gönderir. API'nin cevabı, kullanıcının ikinci faktörünü ayarlamasını isteyen iki faktörlü kimlik doğrulama uzantısına sahiptir.

Şimdi müşteri, kullanıcıdan iki faktörlü kimlik doğrulama uygulamasında yeni bir hesap açmasını ve mevcut kodu girmesini ister veya kullanıcının 2FA kurulumunu atlamasına izin verir. Kullanıcının 2FA kurduğunu varsayalım.

Dördüncü adım: İki faktörlü kimlik doğrulamayı ayarlayın.

Hesap oluşturma sonunda başarılı oldu.

Herhangi bir noktada hesap oluşturma işlemi başarısız olursa, kullanıcıya göstermesi için message ile birlikte FAIL durumuyla bir yanıt döndürülür.

Olası hatalar

Kod Bilgi
badtoken Geçersiz hesap jetonu oluştur
notoken The token parameter must be set.
mustpostparams The following parameter was found in the query string, but must be in the POST body: createtoken.
missingparam At least one of the parameters "createcontinue" ve "createreturnurl" is required.
authmanager-create-no-primary The supplied credentials could not be used for account creation.
invalidemailaddress Geçersiz bir formatta yazıldığından dolayı bu e-posta adresi kabul edilemez.

Lütfen geçerli bir formatta e-posta adresi yazın veya bu bölümü boş bırakın.

badretype Girdiğiniz parolalar eşleşmiyor.
userexists Girdiğiniz kullanıcı adı zaten kullanımda.

Lütfen farklı bir kullanıcı adı seçiniz.

captcha-createaccount-fail Hatalı ya da eksik CAPTCHA.
acct_creation_throttle_hit Visitors to this wiki using your IP address have created num accounts in the last day, which is the maximum allowed in this time period.

As a result, visitors using this IP address cannot create any more accounts at the moment.

If you are at an event where contributing to Wikimedia projects is the focus, please see Requesting temporary lift of IP cap to help resolve this issue.

Ek notlar

Giriş yaptıysanız, bir hesap oluştururken kullanıcı adınız da kaydedilecektir.

  • Bu sayfada verilen kod parçacıklarını yürütürken, unutmayın:
    • Wikide bir hesap oluşturulduktan sonra silinemez.
    • Her zaman bitiş noktası olarak https://test.wikipedia.org/w/api.php kullanın, böylece üretimde yanlışlıkla hesap oluşturmazsınız.
  • MediaWiki site yöneticileri ve uzantı geliştiricileri, yapılandırma dosyasına şu satırı ekleyerek bu API özelliğini devre dışı bırakabilir:
$wgAPIModules['createaccount'] = 'ApiDisabled';

Ayrıca bakınız