Внешний запрос к Wordpress WP-API — базовая аутентификация

Я пытаюсь использовать свой API Wordpress, используя Basic Auth с Guzzle (инструмент http) из моего промежуточного программного обеспечения (Laravel).

$username = 'myAdminUserName';
$password = 'myAdminPassword';
$uri = 'https://example.com/wp-json/mysite-api/cleared-action';
$response = $this->guzzle->put(
    $uri,
    [
        'headers' => [
            'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password )
        ],
        'body' => [
            'user_id' => $wordpressId  //passed into this function
        ]
    ]
);

Затем он попадает на маршрут, настроенный в моем Wordpress API.

$routes['/mysite-api/cleared-action'] = array(
        array(array($this, 'automatedClearing'), WP_JSON_Server::ACCEPT_JSON 
                                               | WP_JSON_Server::CREATABLE 
                                               | WP_JSON_Server::EDITABLE)
    );

Однако это насколько это возможно. Он не достигает моей конечной точки automatedClearing, которая выглядит так

public function automatedClearing() {
    global $container;

    \Groups_User_Group::create( array('user_id' => 2903, 'group_id' => 13));

    $mySiteServices = $container['services'];

    $this->$mySiteServices->sendClearedEmail(2903);  //2903 = user_id
} 

Я использовал жестко заданные значения для идентификатора пользователя.

Я продолжаю получать ответ 200 на свой вызов, поэтому он определенно попадает в маршрут, но не выполняет конечную точку. Ответ в основном просто пустой.

Мой Wordpress access.log показывает, какой маршрут был поражен, но мой error.log ничего не показывает. Кстати, это ящик Laravel Homestead (бродячий), сталкивающийся с бродячим ящиком Wordpress.

Мне интересно, это потому, что WP-API требует одноразового номера? Но я думал, что nonce нужен только в Wordpress, тогда как это внешнее приложение, использующее Wordpress.

Я довольно застрял на этом. Любое руководство приветствуется


person Tuesdave    schedule 30.07.2015    source источник
comment
Вы пытались получить доступ к своей конечной точке WP с помощью GET вместо POST?   -  person gandra404    schedule 30.07.2015
comment
@ gandra404 Я использую PUT, потому что отправляю данные для использования в WP.   -  person Tuesdave    schedule 30.07.2015
comment
Хорошо, но я хотел бы знать, достигнута ли конечная точка через GET. Эта информация должна помочь локализовать проблему.   -  person gandra404    schedule 30.07.2015
comment
@ gandra404 GET работает, только если я добавляю WP_JSON_Server::READABLE к маршруту, иначе я получаю ответ 404.   -  person Tuesdave    schedule 30.07.2015


Ответы (1)


Попробуйте протестировать его с помощью postman... если это работает через postman, то у вас проблема с laravel или guzzle

person gandra404    schedule 30.07.2015
comment
Да, с моим myplugin_api_init все в порядке. Я использую этот плагин для запросов Ajax из своих плагинов Wordpress, поэтому я знаю, что он работает. Технически мне не нужно EDITABLE, так как я «создаю» отношение пользователь => группа. Так что мне просто нужно CREATABLE. Я изменил свой глагол на POST, но все равно не повезло. Однако он даже не достигает первой строки конечной точки, которая должна добавить этого пользователя в группу. - person Tuesdave; 30.07.2015
comment
Попробуйте протестировать его с помощью postman(getpostman.com)... если это работает через postman, то у вас проблемы с ларавель или жрать - person gandra404; 30.07.2015
comment
На самом деле произошла ошибка с моей конечной точкой... Я не знал, что почтальон работает локально. Спасибо за чаевые! - person Tuesdave; 30.07.2015
comment
Пожалуйста. Если это помогло, вы можете принять мой ответ? - person gandra404; 31.07.2015
comment
Отредактируйте свой ответ, чтобы просто включить информацию о почтальоне, и я приму - person Tuesdave; 31.07.2015