您好我使用的是WooCommerce API - Node.js客户端https://www.npmjs.com/package/woocommerce-api
我正在尝试创建一个需要向服务器发出POST请求的客户。 以下是初始化woocomerece REST API的代码:
var WooCommerceAPI = require('woocommerce-api');
var WooCommerce = new WooCommerceAPI({
url: 'http://example.com',
consumerKey: 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
consumerSecret: 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
wpAPI: true,
version: 'wc/v1'
});
这是创建客户的代码:
var data = {
email: 'john.doe@example.com',
first_name: 'John',
last_name: 'Doe',
username: 'john.doe',
billing: {
first_name: 'John',
last_name: 'Doe',
company: '',
address_1: '969 Market',
address_2: '',
city: 'San Francisco',
state: 'CA',
postcode: '94103',
country: 'US',
email: 'john.doe@example.com',
phone: '(555) 555-5555'
},
shipping: {
first_name: 'John',
last_name: 'Doe',
company: '',
address_1: '969 Market',
address_2: '',
city: 'San Francisco',
state: 'CA',
postcode: '94103',
country: 'US'
}
};
WooCommerce.post('customers', data, function(err, data, res) {
console.log(res);
});
但我不断收到服务器的以下回复。
{
"code":"woocommerce_rest_authentication_error",
"message":"Invalid signature - provided signature does not match.",
"data":{"status":401}
}
然而,对服务器上的工作的任何GET请求例如:我可以获得产品列表。
答案 0 :(得分:1)
由于错误是不言自明的。这显然是身份验证问题。在文档中明确提到了
通过HTTPS
您可以通过提供API使用者密钥作为用户名和API使用者秘密作为密码来使用HTTP基本认证。
通过HTTP
您必须使用OAuth 1.0a“单腿”身份验证,以确保API凭据不会被截获。
有关更多详细信息,请参见here
中的文档。答案 1 :(得分:0)
在要传递给功能(变量数据)的对象中,键也必须是字符串。
例如
var data = { “ first_name”:“乔” //等等
}
答案 2 :(得分:0)
我遇到了同样的问题。确保url: 'http://example.com'
与您在wordpress常规设置页面中的完全匹配。例如,两者均以www
开头,并具有确切的协议https
答案 3 :(得分:0)
标头必须包含键“ Content-Type”:“ application / json”
我正在使用OAuthRequest,它的编码方式是:
request.addHeader("Content-Type", "application/json");
即使使用HTTP,它也可以正常工作。