I am trying to post a Product into WooCommerce Rest API using Postman and following is the Code generated in Javascript
using Postman
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);
});
In return, I'm getting following response with status 401 unauthorized
{
"code": "woocommerce_rest_cannot_create",
"message": "Sorry, you are not allowed to create resources.",
"data": {
"status": 401
}
}
Whereas with same credentials I can successfully get data with GET
method at the same endpoint to get all products
Furthermore, in WooCommerce I've already given read/write permission to the user of this credentials
After almost 2 nights researching on this, it was related with this issue: https://github.com/WP-API/Basic-Auth/issues/35
Modify your .htaccess to make the Basic auth work, like this comment indicates: https://github.com/WP-API/Basic-Auth/issues/35#issuecomment-244001216
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
The rule has to be the first rewrite rule in the block.