Jump to content

API:Токени

From mediawiki.org
This page is a translated version of the page API:Tokens and the translation is 94% complete.
Outdated translations are marked like this.
Версія MediaWiki:
1.24

Модуль API:Токени забезпечує токени, необхідні для дій, що змінюють дані, таких як реєстрація, редагування або переміщення сторінки, а також спостереження або патрулювання змін. Для кожної дії вам потрібен певний тип токена. Наприклад: якщо ви хочете увійти на вікі-сайт за допомогою Action API, вам знадобиться токен типу «login» для продовження.

Щоб отримати довідку щодо міграції старішого коду, зверніться до Застарілих параметрів токена API

All tokens change every time you visit a different page or refresh the page. Tokens are generated for both logged in and logged out users. A secret hash that is used to compute all other tokens is stored in whatever storage engine is specified at Manual:$wgSessionCacheType.

Be careful not to post your tokens publicly, for example in screenshots when trying to get technical help. Someone who has one of your un-expired tokens can do things as if they were logged into your account.

Документація API

meta=tokens

(main | query | tokens)

Gets tokens for data-modifying actions.

Specific parameter:
Other general parameters are available.
type

Types of token to request.

Values (separate with | or alternative): createaccount, csrf, deleteglobalaccount, login, patrol, rollback, setglobalaccountstatus, userrights, watch
To specify all values, use *.
Default: csrf
Examples:
Retrieve a csrf token (the default).
api.php?action=query&meta=tokens [open in sandbox]
Retrieve a watch token and a patrol token.
api.php?action=query&meta=tokens&type=watch|patrol [open in sandbox]

Приклад

Запит GET

Відповідь

{
    "batchcomplete": "",
    "query": {
        "tokens": {
            "logintoken": "9ed1499d99c0c34c73faa07157b3b6075b427365+\\"
        }
    }
}

Приклад коду

Python

#!/usr/bin/python3

"""
    tokens.py
    MediaWiki API Demos
    Demo of `Token` module: Fetch token of type `login`
    MIT License
"""

import requests

S = requests.Session()

URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
    "action": "query",
    "meta": "tokens",
    "type": "login",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS)
DATA = R.json()

LOGIN_TOKEN = DATA['query']['tokens']['logintoken']

print(LOGIN_TOKEN)

PHP

<?php

/*
    tokens.php

    MediaWiki API Demos
    Demo of `Token` module: Fetch token of type `login`

    MIT License
*/

$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
    "action" => "query",
    "meta" => "tokens",
    "type" => "login",
    "format" => "json"
];

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

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
// Wikis such as Wikimedia Commons require that you also set a user agent through CURLOPT_USERAGENT
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );
echo( $result['query']['tokens']['logintoken'] . "\n" );

Perl

#!/usr/bin/perl

# tokens.pl
# MediaWiki API Demos
# Demo of `Token` module: Fetch token of type `login`
# WTFPL

use strict;
use warnings;
use JSON;
use LWP::UserAgent;
use URI;

my $url = URI->new('https://www.mediawiki.org/w/api.php');
my %params = (
	'action' => 'query',
	'meta'   => 'tokens',
	'type'   => 'login',
	'format' => 'json',
);
$url->query_form(%params);
my $ua = LWP::UserAgent->new();
my $response = $ua->get($url);
my $data = JSON::decode_json($response->content);
my $login_token = $data->{'query'}{'tokens'}{'logintoken'};
print "$login_token\n";

Node.js

/*
    tokens.js
    MediaWiki API Demos
    Demo of `Token` module: Fetch token of type `login`
    MIT License
*/

var request = require('request'),
    url = "https://www.mediawiki.org/w/api.php";

var params = {
    action: "query",
    meta: "tokens",
    type: "login",
    format: "json"
};

request.get( { url: url, qs: params }, function( error, response, body ){
    body = JSON.parse( body );
    console.log( body.query.tokens.logintoken );
});

MediaWiki JS

/*
    tokens.js
    MediaWiki API Demos
    Demo of `Token` module: Fetch token of type `csrf`
    MIT License
*/

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

api.get( params ).done( function ( data ) {
	console.log( data.query.tokens.csrftoken );
} );

BASH

export MW_URL="https://www.mediawiki.org/w/"
export API_URL="api.php"

# $0 <token type>
# mainly csrf and login
function get-token(){
API_URL="api.php"
RESULT=$(curl -fsSL -X POST \
 -d action=query \
 -d meta=tokens \
 -d type="$1" \
 -d format=json  \
 -c cookie.txt \
 -b cookie.txt \
 "${MW_URL}${API_URL}")
RESULT=${RESULT/*token\":\"}
TOKEN=${RESULT%\\\"*}
echo "$TOKEN"
}

TOKEN=$(get-token login)

Можливі помилки

Код Інформація

Історія параметра

  • v1.27: Введено login, createaccount

Див. також