Woocommerce Rest Api (2.6 и более поздние версии) — ошибка 401

#wordpress #rest #woocommerce

#wordpress #rest #woocommerce

Вопрос:

Я хотел бы использовать Woocommerce с Rest API.

Итак, мой процесс :

  1. активируйте REST API в настройках woocommerce.
  2. Сгенерируйте ключи для пользователя.
  3. Попробуйте аутентифицировать меня по HTTP.

Третий шаг работает с этим: https://packagist.org/packages/automattic/woocommerce

Но я не могу получить данные, например, продукты.

Мой код:

 require __DIR__ . '/vendor/autoload.php';

use AutomatticWooCommerceClient;

$woocommerce = new Client(
    'http://delphes.local',
    'ck_ee31d8082f5b6213b369ef5fb1d4f387e0241840',
    'cs_479ce18567c180263f130072dea082b52872e6e9',
[
    'wp_api' => true,
    'version' => 'wc/v1',
    'verify_ssl'    =>  false,
]
);
var_dump($woocommerce);
use AutomatticWooCommerceHttpClientHttpClientException;
try {
    $results = $woocommerce->get('products');
    // Last request data.
    $lastRequest = $woocommerce->http->getRequest();
    $lastRequest->getUrl(); // Requested URL (string).
    $lastRequest->getMethod(); // Request method (string).
    $lastRequest->getParameters(); // Request parameters (array).
    $lastRequest->getHeaders(); // Request headers (array).
    $lastRequest->getBody(); // Request body (JSON).

    // Last response data.
    $lastResponse = $woocommerce->http->getResponse();
    $lastResponse->getCode(); // Response code (int).
    $lastResponse->getHeaders(); // Response headers (array).
    $lastResponse->getBody(); // Response body (JSON).
    echo "ok";
    var_dump($results);
    var_dump($lastRequest);
    var_dump($lastResponse);
}catch (HttpClientException $e) {
    var_dump($e->getMessage()); // Error message.
    var_dump($e->getRequest()); // Last request data.
    var_dump($e->getResponse()); // Last response data.
}
  

И ответ:

 object(AutomatticWooCommerceClient)[2906]
 public 'http' => 
object(AutomatticWooCommerceHttpClientHttpClient)[2907]
  protected 'ch' => null
  protected 'url' => string 'http://delphes.local/wp-json/wc/v1/' (length=35)
  protected 'consumerKey' => string 'ck_ee31d8082f5b6213b369ef5fb1d4f387e0241840' (length=43)
  protected 'consumerSecret' => string 'cs_479ce18567c180263f130072dea082b52872e6e9' (length=43)
  protected 'options' => 
    object(AutomatticWooCommerceHttpClientOptions)[2908]
      private 'options' => 
        array (size=3)
          ...
  private 'request' => null
  private 'response' => null
  private 'responseHeaders' => null

 string 'cURL Error: Operation timed out after 15008 milliseconds with 0 bytes received' (length=78)

object(AutomatticWooCommerceHttpClientRequest)[2909]
  private 'url' => string 'http://delphes.local/wp-json/wc/v1/products?oauth_consumer_key=ck_ee31d8082f5b6213b369ef5fb1d4f387e0241840amp;oauth_nonce=fbfd6ee91b9586fa47816b924c79c1c4b1bf3d5camp;oauth_signature=PXhShXEu0bgVQuo8pNkLKREUvGcwUyCl593osEF0Akk=amp;oauth_signature_method=HMAC-SHA256amp;oauth_timestamp=1475658731' (length=284)
  private 'method' => string 'GET' (length=3)
  private 'parameters' => 
array (size=5)
  'oauth_consumer_key' => string 'ck_ee31d8082f5b6213b369ef5fb1d4f387e0241840' (length=43)
  'oauth_nonce' => string 'fbfd6ee91b9586fa47816b924c79c1c4b1bf3d5c' (length=40)
  'oauth_signature' => string 'PXhShXEu0bgVQuo8pNkLKREUvGcwUyCl593osEF0Akk=' (length=44)
  'oauth_signature_method' => string 'HMAC-SHA256' (length=11)
  'oauth_timestamp' => int 1475658731
  private 'headers' => 
array (size=3)
  'Accept' => string 'application/json' (length=16)
  'Content-Type' => string 'application/json' (length=16)
  'User-Agent' => string 'WooCommerce API Client-PHP/1.1.1' (length=32)
  private 'body' => string '' (length=0)


object(AutomatticWooCommerceHttpClientResponse)[2911]
  private 'code' => int 0
  private 'headers' => 
array (size=0)
  empty
  private 'body' => boolean false
  

Когда я использую этот URL: http://delphes.local/wp-json/wc/v1/products ?oauth_consumer_key=ck_ee31d8082f5b6213b369ef5fb1d4f387e0241840amp;oauth_nonce=fbfd6ee91b9586fa47816b924c79c1c4b1bf3d5camp;oauth_signature=PXhShXEu0bgVQuo8pNkLKREUvGcwUyCl593osEF0Akk=amp;oauth_signature_method=HMAC-SHA256amp;oauth_timestamp=1475658731

У меня тот же ответ с этим в конце:

Предупреждение: невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался с D:delpheswp-contentthemesdelphesfunctions.php:49 ) в D:delpheswp-includesrest-apiclass-wp-rest-server.php в строке 1196

И

{«code»:»woocommerce_rest_cannot_view», «message»:»Извините, вы не можете перечислить ресурсы», «data»: {«status»:401}}

Я тоже пытался в node.js с этим: woocommerce-api (npm package)

С помощью этого пакета я не могу инициализировать класс с помощью require (путем импорта или require). У меня эта ошибка :

Неперехваченная ошибка: не удается найти модуль «net»

=> в cookies.js: 32 из пакета «tough-cookie».

После установки этого отсутствующего пакета появляется новая ошибка:

Неперехваченная ошибка: не удается найти модуль «.. /package.json»

в cookies.js: 38 ……….

Итак, я отказался от этого пути.

Теперь я остаюсь с Automattic.

Может быть, это проблема с моим vhost или моим htaccess ?

Я долго искал, прежде чем написать этот вопрос.

Что вы думаете об этом error 401 ?

Хорошего дня для приятного сообщества 🙂

Комментарии:

1. Исправлено ! 🙂 — Я новичок в oauth….

2. Вы должны опубликовать ответ…

3. Oauth не может запускаться в локальной сети без сетевого dns. Я попробовал в своем vps, с онлайн-dns, без аутентификации apache, и он работает ! 😉