0

ミドルウェア (Laravel) から 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 には何も表示されません。ちなみに、これはWordpressのvagrantボックスを叩くlaravel Homestead(vagrant)ボックスです。

これは、WP-API が nonce を必要とするためでしょうか? しかし、これは Wordpress にヒットする外部アプリであるのに対し、nonce は Wordpress 内でのみ必要であると考えていました。

私はこれにかなりこだわっています。どんなガイダンスも大歓迎です

4

1 に答える 1

0

郵便配達員を使用してテストしてみてください...郵便配達員を介してこれが機能する場合は、laravelまたはguzzleに問題があります

于 2015-07-30T13:51:14.550 に答える