API:Kullanıcı grubu üyeliği
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
MediaWiki sürümü: | ≥ 1.16 |
POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
API belgesi
Örnek
Bu API'yi kullanmak için önce kendi kullanıcı grubu üyeliğinizi doğrulamak için oturum açmanız gerekir. Bu API aracılığıyla yalnızca belirli gruplara kullanıcı haklarını değiştirme yetkisi verilir. Oturum açma hakkında daha fazla bilgi için API:Oturum aç sayfasına bakın.
Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, userrights
anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
Sorgu şu şekilde yapılır:
Uyumluluk nedenlerinden dolayı, API web arayüzünde kullanılan anahtarı da kabul edecektir.
Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi userrights
isteğinizi yapmak için kullanabilirsiniz.
POST isteği
Yanıt
{
"userrights": {
"user": "Bob",
"userid": 2793024,
"removed": ["bureaucrat"],
"added": ["sysop"]
}
}
Örnek kod
Python
#!/usr/bin/python3
"""
userrights.py
MediaWiki API Demos
Demo of `Userrights` module: Add and remove user rights by
changing the user's group membership.
MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step 1: Retrieve a login token
PARAMS_1 = {
"action": "query",
"meta": "tokens",
"type": "login",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_1)
DATA = R.json()
LOGIN_TOKEN = DATA["query"]["tokens"]["logintoken"]
# Step 2: Send a post request to log in. See
# https://www.mediawiki.org/wiki/Manual:Bot_passwords
# for a special note on logging in using a simplified
# interface when accessing wikis via an application,
# rather than the GUI
PARAMS_2 = {
"action": "login",
"lgname": "username",
"lgpassword": "password",
"lgtoken": LOGIN_TOKEN,
"format": "json"
}
R = S.post(URL, data=PARAMS_2)
# Step 3: Obtain a Userrights token
PARAMS_3 = {
"action": "query",
"format": "json",
"meta": "tokens",
"type": "userrights"
}
R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()
USERRIGHTS_TOKEN = DATA["query"]["tokens"]["userrightstoken"]
# Step 4: Request to add or remove a user from a group
PARAMS_4 = {
"action": "userrights",
"format": "json",
"user": "Bob",
"add": "sysop",
"remove": "bureaucrat",
"reason": "OOPS! added Bob to the wrong group",
"token": USERRIGHTS_TOKEN
}
R = S.post(URL, data=PARAMS_4)
DATA = R.json()
print(DATA)
PHP
<?php
- /*
- userrights.js
-
- Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
- Sorgu şu şekilde yapılır:
- Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
-
- POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
- */
$endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$userrights_Token = getUserRightsToken(); // Step 3
change_userrights( $userrights_Token ); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
global $endPoint;
$params1 = [
"action" => "query",
"meta" => "tokens",
"type" => "login",
"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"]["logintoken"];
}
// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
global $endPoint;
$params2 = [
"action" => "clientlogin",
"username" => "username",
"password" => "password",
'loginreturnurl' => 'http://127.0.0.1:5000/',
"logintoken" => $logintoken,
"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 );
}
// Step 3: GET request to fetch userrights token
function getUserRightsToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"type" => "userrights",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params3 );
$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"]["userrightstoken"];
}
// Step 4: POST request to add or remove a user from a group
function change_userrights( $userrightstoken ) {
global $endPoint;
$params4 = [
"action" => "userrights",
"user" => "ABCDEF",
"add" => "bot",
"expiry" => "infinite",
"reason" => "API Testing",
"token" => $userrightstoken,
"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( $params4 ) );
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
- /*
- userrights.js
-
- Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
- Sorgu şu şekilde yapılır:
- Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
-
- POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
- */
var request = require('request').defaults({jar: true}),
url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";
// Step 1: GET request to fetch login token
function getLoginToken() {
var params_0 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_0 }, function (error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step 2: POST request to log in.
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
var params_1 = {
action: "clientlogin",
username: "username",
password: "password",
loginreturnurl: "http://127.0.0.1:5000/",
logintoken: login_token,
format: "json"
};
request.post({ url: url, form: params_1 }, function (error, res, body) {
if (error) {
return;
}
getUserRightsToken();
});
}
// Step 3: GET request to fetch UserRights token
function getUserRightsToken() {
var params_2 = {
action: "query",
meta: "tokens",
type: "userrights",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
userrights(data.query.tokens.userrightstoken);
});
}
// Step 4: POST request to add or remove a user from a group
function userrights(userrights_token) {
var params_3 = {
action: "userrights",
user: "ABCDEFG",
add: "bot",
expiry: "infinite",
reason: "API Testing",
token: userrights_token,
format: "json"
};
request.post({ url: url, form: params_3 }, function (error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
- /*
- userrights.js
-
- Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
- Sorgu şu şekilde yapılır:
- Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
-
- POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
- */
var params = {
action: 'userrights',
user: 'ABCD',
add: 'sysop',
reason: 'Added ABCD to the sysop group',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'userrights', params ).done( function ( data ) {
console.log( data );
} );
Olası hatalar
Kod | Bilgi |
---|---|
nouser | user parametresi ayarlanmalıdır. |
nosuchuser | "user" kullanıcısı mevcut değil Bu, anonim bir kullanıcının haklarını değiştirmeye çalışırken olabilir.
|
notoken | token parametresi ayarlanmalıdır. |
badtoken | Geçersiz CSRF anahtarı. |
readonly | Viki şu anda salt okunur modda. |
Parametre geçmişi
- v1.29: Introduced
expiry
- v1.23:
userid
tanıtıldı
Ek notlar
- Varsayılan olarak, yalnızca bürokrat grubundaki kullanıcılar kullanıcı hakları verebilir veya kaldırabilir.
- Bazı vikiler, bürokrat olmayanların sınırlı bir şekilde bu yetenekleri kullanıcının kendi hesabıyla sınırlaması gibi haklar vermesine veya kaldırmasına izin verir.
- Hedef kullanıcıya hak verme veya kaldırma yetkisine sahip değilseniz, API bir hata atmaz; bunun yerine, yanıttaki
add
veremove
alanları boş diziler içerir.
Ayrıca bakınız
- Yardım:Kullanıcı yetkileri ve grupları - kullanıcı haklarının ve grup üyeliğinin nasıl daha ayrıntılı çalıştığını açıklar.
- Special:ListGroupRights - belirli bir vikide her kullanıcı grubuna verilen tüm hakları ve ayrıcalıkları listeler.
- Special:UserRights - v1.29 + çalıştıran vikilerde mevcut olan kullanıcı haklarını eklemek veya kaldırmak için bir GUI yolu.
- API:Users - grupları ve hakları da dahil olmak üzere bir kullanıcı listesi hakkında bilgi alır.