it-swarm.com.ru

WooCommerce - woocommerce_rest_cannot_view - Статус 401

Я сгенерировал потребительский ключ и потребительский секрет. На сайте установлен SSL. Я также установил плагины, необходимые для служб JSON и REST. Вот как выглядит URL:

https://<url>/wp-json/wc/v1/products

Когда я пытаюсь получить (ПОЛУЧИТЬ) сведения о продукте с помощью Basic Auth с помощью плагина Chrome POSTMAN, я получаю ответ JSON, например:

{
  "code": "woocommerce_rest_cannot_view",
  "message": "Sorry, you cannot list resources.",
  "data": {
    "status": 401
  }
}

У меня есть разрешения READ и WRITE, соответствующие ключу Consumer.

5
Ram

Я встретил ту же проблему.

Вот как я это решаю:

require "woocommerce_api"

woocommerce = WooCommerce::API.new(
  "https://example.com",
  "consumer_key",
  "consumer_secret",
  {
    wp_json: true,
    version: "wc/v1",
    query_string_auth: true
  }
)

Ключ query_string_auth: true вам нужно включить базовую аутентификацию в виде строки запроса true в HTTPS

6
Aloha

Попытка помочь другим: Я боролся с ответом 401 при попытке CURL, а также с VBA, пытающимся запросить как тип контента "application/json" Однако я смог получить действительный ответ по просто введите это в адресную строку моего браузера: https://mywebsite.com/wp-json/wc/v2/products?consumer_key=ck_blahblah&consumer_secret=cs_blahblah

Следуя этой мысли, я вернулся к своему приложению VBA и изменил тип контента на «application/text» и смог получить действительный текст ответа с кодом ответа 200. Надеюсь, это кому-нибудь поможет.

1
UltimatePeter

Так я перестал волноваться и пошел дальше. 

Короче говоря, все остальные контроллеры woocommerce имеют метод SOMEWPRESTCLASS::get_item_permissions_check(), который, в свою очередь, вызывает wc_rest_check_post_permissions(), чтобы решить, возвращает ли он эту ошибку; 

Таким образом, вы подключаетесь к этому и проверяете, какой хотите:

add_filter( 'woocommerce_rest_check_permissions', 'my_woocommerce_rest_check_permissions', 90, 4 );

function my_woocommerce_rest_check_permissions( $permission, $context, $object_id, $post_type  ){
  return true;
}
0
Quickredfox