私はブラウザーセッションからナンスを借りてテストして、他の場所、つまりnpm開発環境でそれを使用できるようにしています。
私は開いているナンスを受け取ったChromeブラウザセッション、Postmanの "X-WP-Nonce"のgetリクエストヘッダーに入れて、 "Cookie nonce is invalid"を返しました:
「」を囲まずにnonce値も入力してみました
このリクエストが失敗した理由を誰かが知っていますか?
追加
重要ではないと思いますが、念のため、/auth
ルートハンドラーのコールバックを次に示します。
public function authCallback(\WP_REST_Request $request) : void {
$this->isAdminOrRejectionResponse();
wp_send_json([
'success' => "You have access to wp_get_current_user()"
]);
}
protected function isAdminOrRejectionResponse() {
if (current_user_can('administrator') === false) {
wp_send_json(['error' => 'You do not have Administrator credentials.']);
}
}
リモートアプリ(cURL、Postmanなど)の場合、またはブラウザーを使用していない場合は、 認証プラグインApplication Passwords Cookieを送信する代わりに。
ただし、Cookieを送信する場合は、WordPress wordpress_logged_in_<hash>
という名前のログインCookieをコピーして送信します。cURLの例:
curl -H "X-WP-Nonce: <nonce>" -X POST https://example.com/wp-json/wp/v2/posts -d "Data here" -b wordpress_logged_in_<hash>=<cookie value>
WordPressは、ユーザーのログインデータ(ユーザー名とハッシュデータ)をwordpress_logged_in_<hash>
という名前のCookieに保存します(ただし、 LOGGED_IN_COOKIE
絶え間ない)。
また、上記の(cURL)の例では、X-WP-Nonce
ヘッダーを使用してcookie nonceを送信しました。
UPDATE:ChromeのCookieのスクリーンショットを追加(検索およびコピー):