【发布时间】:2015-10-21 20:52:56
【问题描述】:
我正在尝试使用来自我的中间件 (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) 盒子撞到了一个 Wordpress vagrant 盒子。
我想知道这是否是因为 WP-API 需要随机数?但我认为只有在 Wordpress 中才需要 nonce,而这是一个使用 Wordpress 的外部应用程序。
我很坚持这一点。非常感谢任何指导
【问题讨论】:
-
您是否尝试使用 GET 而不是 POST 访问您的 WP 端点?
-
@gandra404 我正在使用 PUT,因为我正在发送要在 WP 中使用的数据
-
好的,但我想知道是否通过 GET 到达端点。此信息应有助于定位问题。
-
@gandra404 GET 仅在我将
WP_JSON_Server::READABLE添加到路由时才有效,否则我会收到 404 响应。
标签: wordpress basic-authentication guzzle nonce wp-api