Woocommerce API Post 方法不适用于通过 POSTMAN 的 HTTP 请求 - 获取无效签名

Posted

技术标签:

【中文标题】Woocommerce API Post 方法不适用于通过 POSTMAN 的 HTTP 请求 - 获取无效签名【英文标题】:Woocommerce API Post method not working with HTTP request Via POSTMAN - Getting Invalid signature 【发布时间】:2020-11-12 22:16:02 【问题描述】:

Woocommerce API 版本 - /wc/v3/

Get 方法工作正常 - 获取所有产品列表,但 当我尝试发布方法时 添加产品不起作用

我收到以下错误消息


    "code": "woocommerce_rest_authentication_error",
    "message": "Invalid signature - provided signature does not match.",
    "data": 
        "status": 401
    

下面是更多细节

 URL - http://*********/wp-json/wc/v3/products& tried without & as well 
    
    Auth type - Oath 1.0 
    
    Signature Method - HMAC-SHA1 & also tried sha256 
    Consumer Key ***
    Consumer Secret  ***
    Timestamp - echo timestamp in wordpress and put same here 
    Nonce-  Random number 
    Version - 1.0 

领域,验证者,回调 URL 不确定要放什么,因为我在 POSTMAN 中尝试相同

在此处查看屏幕截图 - https://snipboard.io/6pkxTU.jpg

我还尝试了一些来自 *** 其他查询的 .htaccess 更新方法,但它对我不起作用

【问题讨论】:

【参考方案1】:

首先,请确保您拥有有效的 API 密钥。并尝试使用基本身份验证。 用户名:Consumer_Key 密码:Consumer_Secret

【讨论】:

我提到的。我已经使用了有效的密钥 - 这就是它使用 get 方法的原因..!!相同的密钥不适用于 post 方法 - 我已向该关键用户授予完全读写访问权限【参考方案2】:

我也有同样的问题,在class-wc-rest-authentication.php 中使用check_oauth_signature 搜索问题是hash_equals( $signature, $consumer_signature ) 后返回false。所以我浏览了与 $sinatue 相关的整个变量,然后是一些有线的东西。

$string_to_sign = $http_method . '&' . $base_request_uri . '&' . $query_string;

$query_string 会附带标题,但是如果您在 Postman 上将 Body 设置为 form-data,则表单数据将附带标题(哇……真的很荒谬,摆脱它)。在我的场景中,点击 raw 和 JSON 而不是 form-data,哈希问题会发生。

【讨论】:

以上是关于Woocommerce API Post 方法不适用于通过 POSTMAN 的 HTTP 请求 - 获取无效签名的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 http.post 不适用于 web api

Web Api 2 CORS 不适用于 POST

POST 请求适用于 Postman,但不适用于 axios.post()

ASP.NET Web API - 模型绑定不适用于 POST 上的 XML 数据

POST 请求适用于 Postman,但不适用于 Guzzle

漂亮的复选框不适用于 WooCommerce