Woocommerce rest api auth с токеном - PullRequest
       9

Woocommerce rest api auth с токеном

0 голосов
/ 04 сентября 2018

Я создаю специальное приложение для публикации продукта из внешнего интерфейса. Проблема в том, что я могу войти в систему с помощью плагина JWT Auth, который дает мне токен. Но я не могу использовать его для создания продукта. Единственное, что работает, - это базовая аутентификация с именем пользователя и паролем. Но я не хочу передавать пароль для запроса.

Когда я пытаюсь с почтальоном Bearer auth token, POST с /wp-json/wc/v2/products, я получаю эту ошибку: woocommerce_rest_cannot_create

Как это сделать?

1 Ответ

0 голосов
/ 04 сентября 2018

эта ошибка может появиться из-за нескольких причин, сначала не используйте почтальон oAuth1.0 вместо того, чтобы использовать базовую аутентификацию. попробуйте заменить имя пользователя и пароль своим потребительским ключом.

** Измените ваш .htaccess, чтобы заставить работать Basic auth,

вставьте это:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Вторая причина: пропущенные переменные с отправкой / скручиванием / извлечением вашего URL или не удовлетворением требованиям остальных API. Вот несколько советов, которые могут помочь решить эту проблему.

Советы OAuth Параметры OAuth могут быть добавлены в качестве параметров строки запроса или включены в заголовок авторизации.

Обратите внимание, что в WordPress нет надежного кроссплатформенного способа получения необработанных заголовков запросов, поэтому строка запроса в некоторых случаях должна быть более надежной. Обязательные параметры: oauth_consumer_key , oauth_timestamp , oauth_nonce , oauth_signature и oauth_signature_method . oauth_version не требуется и должен быть пропущен .

Одноразовый номер OAuth может быть любой случайно сгенерированной 32-символьной (рекомендуемой) строкой, уникальной для ключа потребителя. Ознакомьтесь с дополнительными предложениями по созданию одноразовых номеров на форумах Twitter REST API.

Метка времени OAuth должна быть меткой времени Unix на момент запроса. REST API будет отклонять любые запросы, содержащие временную метку за пределами 15-минутного окна, чтобы предотвратить атаку воспроизведения с.

Вы должны использовать URL-адрес хранилища, предоставленный индексом, при формировании базовой строки, используемой для подписи, поскольку именно это будет использовать сервер. (например, если URL магазина включает субдомен www, вы должны использовать его для запросов)

Вы можете проверить сгенерированную подпись с помощью тестовой консоли OAuth в LinkedIn - оставьте маркер участника / секретный ключ пустым.

В Твиттере есть отличные инструкции по генерации подписей с помощью OAuth 1.0a, но помните, что токены не используются в этой реализации.

Обратите внимание, что тело запроса не подписано в соответствии со спецификацией OAuth, подробности о причинах см. В расширении OAuth 1.0 от Google.

Если включить параметры в ваш запрос, это сэкономит массу хлопот, если вы сможете заказать товары в алфавитном порядке. Поддерживается заголовок авторизации s tarting WooCommerce 3.0.

Обратите внимание, что для текущих версий WordPress использование фильтра json_url_prefix больше не работает.

В WordPress 4.7 (и с использованием REST API из ядра вместо плагина) это то, что вам нужно сделать, чтобы изменить префикс API.

add_filter( 'rest_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { return 'api'; }

Если это не сработает сразу, вам нужно сбросить правила перезаписи. Вы можете запустить этот фрагмент кода один раз (не оставляйте его в своем коде, чтобы он выполнялся каждый раз)

flush_rewrite_rules(true);
...