对 Wordpress WP-API 的外部请求 - 基本身份验证

External request to Wordpress WP-API - Basic Authentication

我正在尝试使用我的中间件 (Laravel) 中的 Basic Auth with Guzzle(http 工具)访问我的 Wordpress API。

$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
} 

我为用户 ID 使用了硬编码值。

我的呼叫不断收到 200 响应,因此它肯定命中了路由,但没有执行端点。响应基本上只是一个空的。

我的 Wordpress access.log 显示了正在访问的路由,但我的 error.log 没有显示任何内容。顺便说一下,这是一个 laravel Homestead (vagrant) box 击中了 Wordpress vagrant box。

我想知道这是不是因为 WP-API 需要随机数?但我认为 nonce 只在 Wordpress 中需要,而这是一个访问 Wordpress 的外部应用程序。

我非常坚持这一点。非常感谢任何指导

尝试使用 postman 对其进行测试...如果这可以通过邮递员进行,那么您遇到 laravel 或 guzzle

的问题