Php 无法使用文件\u get\u contents()登录MediaWiki API

Php 无法使用文件\u get\u contents()登录MediaWiki API,php,mediawiki,file-get-contents,Php,Mediawiki,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"

我在哪里犯了错误?我的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";
?>

错误首先在于使用
文件\u get\u contents()
。相反,请使用a

如果你真的想自己做事情

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