Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mediawiki:无效的登录令牌_Php_Login_Mediawiki_Mediawiki Api - Fatal编程技术网

Php Mediawiki:无效的登录令牌

Php Mediawiki:无效的登录令牌,php,login,mediawiki,mediawiki-api,Php,Login,Mediawiki,Mediawiki Api,我试图通过api登录,但总是会出现“badtoken”错误(“无效令牌”)。 我遵循了Mediawiki/Api帮助的完整指南,并完全按照他们的建议行事 我获得登录令牌: 我为clientlogin执行POST请求 这是我的密码: $wiki = 'example.de/wiki/'; $api = $wiki.'api.php?'; $retry = false; $wpName = 'someone' $wpPassword = 'supersave'; $json_a = (file_

我试图通过api登录,但总是会出现“badtoken”错误(“无效令牌”)。 我遵循了Mediawiki/Api帮助的完整指南,并完全按照他们的建议行事

  • 我获得登录令牌:
  • 我为clientlogin执行POST请求
  • 这是我的密码:

    $wiki = 'example.de/wiki/'; 
    $api = $wiki.'api.php?';
    $retry = false;
    $wpName = 'someone'
    $wpPassword = 'supersave';
    
    $json_a = (file_get_contents($wiki.'api.php?action=query&meta=tokens&type=login&format=json');
    $json_b = json_decode($json_a,true);
    $token = $json_b['query']['tokens']['logintoken'];
    echo("\nToken: ".$token."\n");
    
    $data = array(
            'action'               => 'clientlogin',
            'loginreturnurl'       => $wiki,
            'logintoken'           => $token,  
            'username'             => $wpName,
            'password'             => $wpPassword,
            'rememberMe'           => 1); 
    
    $ch = curl_init($api);
    $postString = http_build_query($data, '', '&');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    # Get the response
    $response = curl_exec($ch);
    curl_close($ch);   
    

    有人知道如何执行登录吗?

    您需要在同一个会话中执行所有操作。两个请求都使用curl,两个请求都使用CURLOPT_-COOKIEFILE和CURLOPT_-COOKIEJAR。此外,clientlogin并不真正用于非交互式登录。最好使用action=login和。