【问题标题】:External request to Wordpress WP-API - Basic Authentication对 Wordpress WP-API 的外部请求 - 基本身份验证
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 是的,我的myplugin_api_init 没有任何问题。我在我的 Wordpress 插件中使用这个插件来处理 Ajax 请求,所以我知道它可以工作。从技术上讲,我不需要EDITABLE,因为我正在“创建”一个用户 => 组关系。所以我真的只需要CREATABLE。我已将动词更改为 POST,但仍然没有运气。它甚至没有到达端点的第一行,即将该用户添加到组中。
  • 尝试使用 postman(getpostman.com) 测试它...如果这通过 postman 工作,那么你有 laravel 或 guzzle 的问题
  • 我的端点实际上有一个错误......我没有意识到邮递员在本地工作。感谢您的提示!
  • 不客气。如果这有帮助你能接受我的回答吗?
  • 编辑你的答案,只包括邮递员信息,我会接受
猜你喜欢
  • 1970-01-01
  • 2018-05-18
  • 2020-03-03
  • 2019-01-31
  • 1970-01-01
  • 2014-12-11
  • 2013-11-13
  • 1970-01-01
相关资源
最近更新 更多