我使用Wordpress 4.7.1
和Woocommerce 2.6.13
插件启用了REST API。我是使用read_write
权限从控制台插件UI创建的用户凭据。
现在我尝试使用OAuth1获取GET产品: 服务返回200 OK,凭证是对的。
然后我试图删除一些产品: 或尝试创建新产品: 服务返回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
答案 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)
有时,服务器不支持POST / DELETE / PUT 理想情况下,应该将服务器配置为接受这些类型的API请求,但如果没有,则可以使用_method属性。
执行POST请求,并通过_method = PUT作为查询参数对我有用。
答案 3 :(得分:0)
我在 WC REST API 上遇到了同样的问题,并使用 v2 解决了它,我使用了 POST 而不是 PUT,例如:
orderid int
customerid nchar(5)