13

我正在使用带有启用 REST API4.7.1的 Woocommerce插件的 Wordpress。我是从具有权限2.6.13的控制台插件 UI 创建的用户凭据。read_write

现在我正在尝试使用 OAuth1 获取产品: 在此处输入图像描述 服务返回 200 OK,凭据是正确的。

然后我正在尝试删除某些产品: 在此处输入图像描述 或尝试创建新产品: 在此处输入图像描述 服务返回 401 Unauthorized。

怎么了?

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

4 回答 4

2

这个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 作为查询参数传递对我有用。

于 2019-11-21T19:50:35.747 回答
1

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

于 2017-07-22T05:14:58.563 回答
0

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

$woocommerce = new Client(
    '*** woocommerce-website-url ***',
    '*** key ***',
    '*** secret ***',
    [
        'version' => 'wc/v2',
        'verify_ssl' => false,
        'wp_api' => true,
        'query_string_auth' => true
    ]
);

$data = [
    "stock_quantity" => "0"
];

$woocommerce->post('products/12345', $data);
于 2021-04-16T17:19:11.960 回答
0

与 API 密钥关联的用户的角色是什么?

我在使用 Woocommerce API 时遇到了一些授权错误,即使 API 密钥具有读/写权限。在我检查了 Wordpress 中的 Woocommerce API 密钥设置后,我注意到与我使用的密钥关联的用户没有任何 Woocommerce 角色,例如客户、商店经理或管理员。

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

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

于 2017-03-21T15:52:31.923 回答