我最近决定给React Native一个机会。我在使用react-native-woocommerce-api
与Woocommerce进行交流时遇到了一些麻烦。
当我获得所有产品时,它很好用,但是当我尝试为HTTP调用设置属性时,它失败。
这有效:
componentDidMount() {
console.log("Loading products...");
Woocommerce.get("products", {}).then(response => {
console.log(response);
});
}
这不是(每页添加):
componentDidMount() {
console.log("Loading products...");
Woocommerce.get("products", {per_page: 3}).then(response => {
console.log(response);
});
}
引发错误:
Object {
"code": "woocommerce_rest_authentication_error",
"data": Object {
"status": 401,
},
"message": "Invalid signature - the signature doesn't match.",
}
有效的HTTP请求:
http://www.example.com/wp-json/wc/v3/products?oauth_consumer_key=###&oauth_nonce=###&oauth_signature_method=HMAC-SHA256&oauth_timestamp=1560818379&oauth_version=1.0&oauth_signature=###=&
无效的HTTP请求:
http://www.example.com/wp-json/wc/v3/products?oauth_consumer_key=###&oauth_nonce=###&oauth_signature_method=HMAC-SHA256&oauth_timestamp=1560817909&oauth_version=1.0&oauth_signature=###=&per_page=3
我还应该补充一点,当使用Postman添加per_page=3
时,它可以工作。我不知道它有什么区别,HTTP调用非常相似,似乎只有uri参数的顺序不同。
感谢您的帮助!整整一整天都被困在这儿。 :/
答案 0 :(得分:1)
在 node_modules \ react-native-woocommerce-api \ lib \
中打开 react-native-woocommerce-api.js然后转到第195行(_getOAuth()。authorize函数)并进行更改:
params.qs = this._getOAuth().authorize({
url: url,
method: method
});
到
params.qs = this._getOAuth().authorize({
url: url + '?' + this.join(data, '&'),
method: method
});