3

Postman を使用して製品を WooCommerce Rest API に投稿しようとしています。以下は、Postman をJavascript使用して生成されたコードです。

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://woocommerce.dev/wp-json/wc/v1/products",
  "method": "POST",
  "headers": {
    "content-type": "application/json",
    "authorization": "OAuth oauth_consumer_key=\\\"ck_da643d25cb86d32dcf1c4a684ba0fdad4acd67ce\\\",oauth_signature_method=\\\"HMAC-SHA1\\\",oauth_timestamp=\\\"1469615598\\\",oauth_nonce=\\\"oOOqcB\\\",oauth_version=\\\"1.0\\\",oauth_signature=\\\"jf%2FepKymwW9IFlv7fwHFTA3aNs8%3D\\\"",
    "cache-control": "no-cache",
    "postman-token": "2202e03b-243e-96c5-8e77-fcc8919aedbc"
  },
  "processData": false,
  "data": "{\n  \"name\": \"Premium Quality\",\n  \"type\": \"simple\",\n  \"regular_price\": \"21.99\",\n  \"description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.\",\n  \"short_description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\",\n  \"categories\": [\n    {\n      \"id\": 9\n    },\n    {\n      \"id\": 14\n    }\n  ],\n  \"images\": [\n    {\n      \"src\": \"http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg\",\n      \"position\": 0\n    },\n    {\n      \"src\": \"http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg\",\n      \"position\": 1\n    }\n  ]\n}"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

その見返りに、ステータス付きの次の応答を取得しています401 unauthorized

{
  "code": "woocommerce_rest_cannot_create",
  "message": "Sorry, you are not allowed to create resources.",
  "data": {
    "status": 401
  }
}

同じ資格情報を使用するとGET、同じエンドポイントでメソッドを使用してデータを正常に取得して、すべての製品を取得できます

http://woocommerce.dev/wp-json/wc/v1/products

さらに、WooCommerce では、この資格情報のユーザーに読み取り/書き込み許可を既に与えています。

4

1 に答える 1

10

これについてほぼ2晩調査した後、この問題に関連していました:https://github.com/WP-API/Basic-Auth/issues/35

このコメントが示すように、基本認証が機能するように .htaccess を変更します

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

ルールは、ブロック内の最初の書き換えルールである必要があります。

于 2016-09-08T05:24:17.657 に答える