it_proger29
@it_proger29
Битрикс

Почему ошибка 401 в rest api?

Здравствуйте, хочу добавить через rest api в woocommerce товар, но выводится ошибка 401.
Это ошибка:
stdClass Object
(
    [code] => woocommerce_rest_cannot_create
    [message] => У вас недостаточно прав для создания ресурсов.
    [data] => stdClass Object
        (
            [status] => 401
        )

)


Это код добавления товара.
<?php 

$api_response = wp_remote_post( 'http://localhost/ecler/wp-json/wc/v2/products', array(
	'headers' => array(
	   'Authorization' => 'Basic ' . base64_encode( 'cs_d80c14bf929469657155e3e7f8aa446ce4b3016a' )
   ),
   'body' => array(
	   'name' => 'My test2', // product title
	   'status' => 'publish', // product status, default: publish
	   'categories' => array(
		   array( 
			   'id' => 15 // each category in a separate array
		   ),
		//    array(
		// 	   'id' => 10
		//    )
	   ),
	   'regular_price' => '9.99' // product price
	   // more params http://woocommerce.github.io/woocommerce-rest-api-docs/?shell#product-properties
   )
) );

$body = json_decode( $api_response['body'] );
//print_r( $body );

if( wp_remote_retrieve_response_message( $api_response ) === 'Created' ) {
   echo 'The product ' . $body->name . ' has been created';
}

print_r( $body );
// print_r( $api_response );
?>


Это .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /ecler/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /ecler/index.php [L]
</IfModule>
# END WordPress


Из-за чего появляется ошибка 401? Погуглил, советуют изменить .htaccess но не помогает.
  • Вопрос задан
  • 831 просмотр
Решения вопроса 1
it_proger29
@it_proger29 Автор вопроса
Битрикс
Оказывается тут "'Authorization' => 'Basic ' . base64_encode( 'cs_d80c14bf929469657155e3e7f8aa446ce4b3016a' )" нужно вводить данные от аккаунта а не секретный ключ и ключ сайта которое дается при создании api в woocommerce -_-
$api_response = wp_remote_post( 'http://localhost/ecler/wp-json/wc/v3/products', array(
	'headers' => array(
	   'Authorization' => 'Basic ' . base64_encode( 'ЛОГИН:ПАРОЛЬ' )
   ),
   'body' => array(
	   'name' => 'My test2', // product title
	   'status' => 'publish', // product status, default: publish
	   'categories' => array(
		   array( 
			   'id' => 15 // each category in a separate array
		   ),
		//    array(
		// 	   'id' => 10
		//    )
	   ),
	   'regular_price' => '9.99' // product price
	   // more params http://woocommerce.github.io/woocommerce-rest-api-docs/?shell#product-properties
   )
) );

$body = json_decode( $api_response['body'] );
//print_r( $body );

if( wp_remote_retrieve_response_message( $api_response ) === 'Created' ) {
   echo 'The product ' . $body->name . ' has been created';
}

print_r( $body );
// print_r( $api_response );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы