WooCommerce Rest API Oauth Javascript
WooCommerce Rest API Oauth with Javascript
我在尝试在 WooCommerce Rest API 上进行身份验证时遇到问题,以执行获取产品等基本操作...我想以简单的方式进行 javascript,以便在 Cordova 上使用生成的应用程序。但是我在尝试获取内容时不断收到 401 Unauthorized
错误。这是我的代码:
import axios from 'axios'
import OAuth from 'oauth-1.0a'
import crypto from 'crypto'
const ck = '[MY_CLIENT_KEY]'
const cs = '[MY_SECRET_KEY]'
const url = '[MY_URL]/wp-json/wc/v2/products'
const oauth = OAuth({
consumer: {
key: ck,
secret: cs
},
signature_method: 'HMAC-SHA1',
hash_function: function(base_string, key) {
return crypto.createHmac('sha1', key).update(base_string).digest('base64')
}
})
const token = {
key: ck,
secret: cs
}
var request_data = {
method: 'GET',
url: url
}
var params = oauth.authorize(request_data, token)
console.log(params)
axios.get(url + '/?oauth_signature=' + params.oauth_signature +
'&oauth_consumer_key=' + ck +
'&oauth_nonce=' + params.oauth_nonce +
'&oauth_signature_method=HMAC-SHA1&oauth_timestamp=' + params.oauth_timestamp +
'&oauth_token=' + params.oauth_token +
'&oauth_version=1.0')
.then(function(data){
console.log(data)
}, function(error){
console.log(error)
})
关于如何完成这项工作有什么想法吗?我哪里失败了?
明白了,灵感来自 。
import axios from 'axios'
import OAuth from 'oauth-1.0a'
import CryptoJS from 'crypto-js'
import jQuery from 'jquery'
const that = this
const ck = '[MY_CLIENT_KEY]'
const cs = '[MY_SECRET_KEY]'
const url = '[MY_URL]/wp-json/wc/v2/products'
const oauth = OAuth({
consumer: {
key: ck,
secret: cs
},
signature_method: 'HMAC-SHA1',
hash_function: function(base_string, key) {
return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(base_string, key));
}
});
const requestData = {
url: url,
method: 'GET'
};
axios.get(
requestData.url + '?' + jQuery.param(oauth.authorize(requestData))
).then(function(response){
console.log(response.data)
}, function(error){
console.log(error)
})
我认为您不需要 jquery 在 Axios 中添加参数我认为您可以
axios.get(requestData.url, { params: oauth.authorize(requestData) }).then(
function(response) {
console.log(response.data);
},
function(error) {
console.log(error);
}
);
我在尝试在 WooCommerce Rest API 上进行身份验证时遇到问题,以执行获取产品等基本操作...我想以简单的方式进行 javascript,以便在 Cordova 上使用生成的应用程序。但是我在尝试获取内容时不断收到 401 Unauthorized
错误。这是我的代码:
import axios from 'axios'
import OAuth from 'oauth-1.0a'
import crypto from 'crypto'
const ck = '[MY_CLIENT_KEY]'
const cs = '[MY_SECRET_KEY]'
const url = '[MY_URL]/wp-json/wc/v2/products'
const oauth = OAuth({
consumer: {
key: ck,
secret: cs
},
signature_method: 'HMAC-SHA1',
hash_function: function(base_string, key) {
return crypto.createHmac('sha1', key).update(base_string).digest('base64')
}
})
const token = {
key: ck,
secret: cs
}
var request_data = {
method: 'GET',
url: url
}
var params = oauth.authorize(request_data, token)
console.log(params)
axios.get(url + '/?oauth_signature=' + params.oauth_signature +
'&oauth_consumer_key=' + ck +
'&oauth_nonce=' + params.oauth_nonce +
'&oauth_signature_method=HMAC-SHA1&oauth_timestamp=' + params.oauth_timestamp +
'&oauth_token=' + params.oauth_token +
'&oauth_version=1.0')
.then(function(data){
console.log(data)
}, function(error){
console.log(error)
})
关于如何完成这项工作有什么想法吗?我哪里失败了?
明白了,灵感来自
import axios from 'axios'
import OAuth from 'oauth-1.0a'
import CryptoJS from 'crypto-js'
import jQuery from 'jquery'
const that = this
const ck = '[MY_CLIENT_KEY]'
const cs = '[MY_SECRET_KEY]'
const url = '[MY_URL]/wp-json/wc/v2/products'
const oauth = OAuth({
consumer: {
key: ck,
secret: cs
},
signature_method: 'HMAC-SHA1',
hash_function: function(base_string, key) {
return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(base_string, key));
}
});
const requestData = {
url: url,
method: 'GET'
};
axios.get(
requestData.url + '?' + jQuery.param(oauth.authorize(requestData))
).then(function(response){
console.log(response.data)
}, function(error){
console.log(error)
})
我认为您不需要 jquery 在 Axios 中添加参数我认为您可以
axios.get(requestData.url, { params: oauth.authorize(requestData) }).then(
function(response) {
console.log(response.data);
},
function(error) {
console.log(error);
}
);