#wordpress #rest #woocommerce
#wordpress #rest #woocommerce
Вопрос:
Я хотел бы использовать Woocommerce с Rest API.
Итак, мой процесс :
- активируйте REST API в настройках woocommerce.
- Сгенерируйте ключи для пользователя.
- Попробуйте аутентифицировать меня по 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
У меня тот же ответ с этим в конце:
Предупреждение: невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался с 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, и он работает ! 😉