API:Odhlášení
Appearance
From mediawiki.org
This page is a translated version of the page API:Logout and the translation is 100% complete.
Languages:
Tato stránka je součástí dokumentace k API Action MediaWiki.
Akce API MediaWiki |
---|
Základní informace |
Přihlášení |
Uživatelské účty a uživatelé |
Operace spojené se stránkou |
|
Vyhledávání |
Nástroje pro vývojáře |
Návody |
v · d · u |
Verze MediaWiki:
≥ 1.12
Požadavek POST pro odhlášení z účtu. Dříve použitý požadavek GET bez tokenu vrátí varování a NEODHLÁSÍ se.
Při odhlášení se odstraní přihlašovací tokeny a další soubory cookie prohlížeče.
Dokumentace API
Následující dokumentace je výstupem Special: ApiHelp/ logout, automaticky generovaným pre-release verzí MediaWiki, která je spuštěna na tomto webu (MediaWiki.org).
action=logout
(main | logout)
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Log out and clear session data.
Specific parameters:
Other general parameters are available.
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- checkuserclienthints
Client hints data supplied alongside requests to ApiLogout. For internal use only.
Example:
- Log the current user out.
- api.php?action=logout&token=123ABC [open in sandbox]
Příklad
Požadavek POST
Odpověď
{ }
Ukázkový kód
Python
#!/usr/bin/python3 """ logout.py MediaWiki API Demos Demo of `Logout` module: Log out and clear session data. MIT License """ importrequests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" # Step 1: Retrieve login token first PARAMS_0 = { 'action':"query", 'meta':"tokens", 'type':"login", 'format':"json" } R = S.get(url=URL, params=PARAMS_0) DATA = R.json() LOGIN_TOKEN = DATA['query']['tokens']['logintoken'] # Step 2: Send a POST request to login. Using the main account for login is not # supported. Obtain credentials via Special:BotPasswords # (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword PARAMS_1 = { 'action':"login", 'lgname':"your_bot_username", 'lgpassword':"your_bot_password", 'lgtoken':LOGIN_TOKEN, 'format':"json" } R = S.post(URL, data=PARAMS_1) DATA = R.json() # Step 3: GET request to fetch CSRF token PARAMS_2 = { "action":"query", "meta":"tokens", "format":"json" } R = S.get(url=URL, params=PARAMS_2) DATA = R.json() CSRF_TOKEN = DATA['query']['tokens']['csrftoken'] # Step 4: Send a POST request to logout PARAMS_3 = { "action": "logout", "token": CSRF_TOKEN, "format": "json" } R = S.post(URL, data=PARAMS_3) DATA = R.json() print(DATA)
PHP
<?php /* logout.php MediaWiki API Demos Demo of `Logout` module: Log out and clear session data. MIT license */ $endPoint = "https://test.wikipedia.org/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $csrf_Token = getCSRFToken(); // Step 3 logoutRequest( $csrf_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" => "login", "lgname" => "bot_user_name", "lgpassword" => "bot_password", "lgtoken" => $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 CSRF token function getCSRFToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "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"]["csrftoken"]; } // Step 4: POST request to logout function logoutRequest( $csrftoken ) { global $endPoint; $params4 = [ "action" => "logout", "token" => $csrftoken, "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
/* logout.js MediaWiki API Demos Demo of `Logout` module: Log out and clear session data. MIT License */ varrequest=require('request').defaults({jar:true}), url="https://en.wikipedia.org/w/api.php"; // Step 1: GET request to fetch login token functiongetLoginToken(){ varparams_0={ action:"query", meta:"tokens", type:"login", format:"json" }; request.get({url:url,qs:params_0},function(error,res,body){ if(error){ return; } vardata=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 functionloginRequest(login_token){ varparams_1={ action:"login", lgname:"your_bot_username", lgpassword:"your_bot_password", lgtoken:login_token, format:"json" }; request.post({url:url,form:params_1},function(error,res,body){ if(error){ return; } getCsrfToken(); }); } // Step 3: GET request to fetch CSRF token functiongetCsrfToken(){ varparams_2={ action:"query", meta:"tokens", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); logoutRequest(data.query.tokens.csrftoken); }); } // Step 4: Send a POST request to logout functionlogoutRequest(csrf_token){ varparams_3={ action:"logout", token:csrf_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
/* logout.js MediaWiki API Demos Demo of `Logout` module: Log out and clear session data. MIT License */ varparams={ action:'logout', format:'json' }, api=newmw.Api(); api.postWithToken('csrf',params).done(function(data){ console.log(data); });
Historie parametrů
- v1.30: Představeno
token
Další poznámky
- Všechny wikiny Wikimedie včetně MediaWiki 1.34.0-wmf.3, pro použití tohoto modulu (mailarchive:mediawiki-api-announce/2019-April/000145.html), vyžadují token CSRF (stejný jako pro úpravy).
Související odkazy
Externí odkazy
- phab:T25227 — Při odhlašování použijte token
- phab:T222626 — Proměňte odhlašovací odkaz na volání POST API s aktualizací