无法使用 file_get_contents() 登录 MediaWiki-API

Cannot login to MediaWiki-API with file_get_contents()

我哪里弄错了?我的 PHP-脚本:

<?php
// Set username and password
$lgname = "someUsername";
$lgpassword = "somePassword";

// First login to receive 1) token, 2) sessionid and 3) cookieprefix
$parameters = array('action' => 'login', 'lgname' => "$lgname", 'lgpassword' => "$lgpassword", 'format' => 'json');
options = array(
    'http' => array(
    'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
    'method'  => 'POST',
    'content' => http_build_query($parameters)
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents("http://en.wikipedia.org/w/api.php", false, $context);

// Echo out the answer from MediaWiki-API
echo "$result";

// Put the needed parts of the answer into variables and echo them out
$array = json_decode($result,true);
$token = $array["login"]["token"];
$sessionid = $array["login"]["sessionid"];
$cookieprefix = $array["login"]["cookieprefix"];
echo "</BR>token: $token, sessionid: $sessionid, cookieprefix: $cookieprefix</BR>";

// Second login to 1) post token and 2) send sessionID within the header
$parameters = array('action' => 'login', 'lgname' => "$lgname", 'lgpassword' => "$lgpassword", 'lgtoken' => "$token", 'format' => 'json');

$options = array(
    'http' => array(
    'header'  => "Content-type: application/x-www-form-urlencoded\r\n" .
             "Cookie: " . $cookieprefix . "_session = $sessionid\r\n",
    'method'  => 'POST',
    'content' => http_build_query($parameters)
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents("http://en.wikipedia.org/w/api.php", false, $context);

// Echo out result
echo "$result";
?>

我得到的第二个 POST-请求的答案是(与我的第一个 POST-请求完全相同)我需要一个令牌(即使我发布了令牌甚至我的第二个 POST-request 中的 sessionID):

{"login": {
    "result":"NeedToken",
    "token":"82b3f2e1f1aa702ca6ceae473bb16bde",
    "cookieprefix":"dewiki",
    "sessionid":"531143bd7425722bf1be88e520dea6d5"}
}

错误在于首先使用 file_get_contents()。请改用 PHP library for the MediaWiki web API

如果你真的想自己做事,ask a token from meta=tokens