无法通过REST API将任何产品发布/删除/删除到WooCommerce中

时间:2017-01-21 11:16:15

标签: wordpress woocommerce woocommerce-rest-api

我使用Wordpress 4.7.1和Woocommerce 2.6.13插件启用了REST API。我是使用read_write权限从控制台插件UI创建的用户凭据。

现在我尝试使用OAuth1获取GET产品: enter image description here 服务返回200 OK,凭证是对的。

然后我试图删除一些产品: enter image description here 或尝试创建新产品: enter image description here 服务返回401未经授权。

什么错了?

UPD1: .htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

# END WordPress

4 个答案:

答案 0 :(得分:1)

您使用的是旧版API方法。将最新版本与更新的woocommerce插件一起使用。您也可以点击此链接 https://woocommerce.github.io/woocommerce-rest-api-docs/?php#delete-a-product

答案 1 :(得分:0)

与API密钥关联的用户有哪些角色?

我对Woocommerce API有一些授权错误,即使API密钥具有读/写权限。在我检查Wordpress中的Woocommerce API密钥设置后,我注意到与我使用的密钥相关联的用户没有任何Woocommerce角色,例如Customer,Shop Manager或Admin。

将管理员用户与一些新的API密钥相关联后,我解决了该问题并可以使用所有API端点进行授权。

由于您仅被授权使用某些端点,因此可能是同一个问题。与API密钥关联的用户可能没有具有删除权限的角色。

答案 2 :(得分:0)

这个https://github.com/woocommerce/woocommerce/wiki/Getting-started-with-the-REST-API#server-does-not-support-postdeleteput为我解决了问题。

有时,服务器不支持POST / DELETE / PUT 理想情况下,应该将服务器配置为接受这些类型的API请求,但如果没有,则可以使用_method属性。

请参见https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/#_method-or-x-http-method-override-header

执行POST请求,并通过_method = PUT作为查询参数对我有用。

答案 3 :(得分:0)

我在 WC REST API 上遇到了同样的问题,并使用 v2 解决了它,我使用了 POST 而不是 PUT,例如:

orderid  int
customerid nchar(5)