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
POST 请求适用于 Postman,但不适用于 axios.post()
ASP.NET Web API - 模型绑定不适用于 POST 上的 XML 数据