Wordpress通过cURL使用REST API登录

时间:2017-09-28 13:41:12

标签: php wordpress rest curl cookies

我正在尝试编写一个允许某人登录Wordpress的Wordpress REST API控制器。

为了测试目的,我编写了以下代码:

&

如果直接通过浏览器访问api,这段代码很有效。在我的浏览器上输入后:

add_action( 'rest_api_init', function () {
  register_rest_route( 'login/v1', '/username/(?P<username>[a-zA-Z0-9-]+)', array(
    'methods' => 'GET',
    'callback' => 'rest_login',
  ) );
} );

function rest_login( $data ) {
    $user = get_user_by( 'login', $data['username'] );
    if ($user) {
        wp_set_auth_cookie( $user->ID );
        return $user->ID;
    }
    else {
        return "invalid username";
    }
}

浏览器已登录,我可以通过用户http://wordpress.localhost/wp-json/login/v1/username/alan 访问wp-admin端。

但是,我必须从其他网站访问此API方法。我的第一次尝试是使用cURL来完成它,如https://wordpress.stackexchange.com/questions/36452/creating-login-session-via-curl

中所述
alan

cookie.txt文件填充了以下内容:

$cookie_file = "cookie.txt";
$process = curl_init('http://wordpress.localhost/wp-json/login/v1/username/alan');
curl_setopt($process, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($process, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($process, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
curl_close($process);
$result = json_decode($return, true);

我可以做我想做的事吗?如果是的话,我做错了什么?

最好的, 阿兰

0 个答案:

没有答案