Use woocommerce resto api v1 com http e javascript (não https)
Estou a usarassinatura oauth para gerar minha assinatura oauth para conexão com a API do woocommerce. Eu segui todos os passos indicados emdocumentação da API do resto do woocommerce:
Os parâmetros necessários são:oauth_consumer_key, oauth_timestamp, oauth_nonce, oauth_signature e oauth_signature_method. oauth_version não é necessário e deve ser omitido. O nona OAuth pode ser qualquer sequência de 32 caracteres (recomendada) gerada aleatoriamente, exclusiva da chave do consumidor. etc ...
Mas a solicitação a seguir ainda retorna não autorizada:
(Não se preocupe, as chaves são apenas para uso local)
Resposta:
{"code":"woocommerce_rest_cannot_view","message":"Beklager, du kan ikke liste ressurser.","data":{"status":401}}
Estou usando o WP 4.7, WC 2.6.9, API ativada para WC, SSL desativado para WC etc.
Também verifiquei se isso é feito conforme exigido pela biblioteca:
Gere a assinatura usando a cadeia de base da assinatura e sua chave secreta do consumidor com um caractere & com o algoritmo de hash HMAC-SHA1.
O fuso horário é UNIX e o nonce deve ser gerado conforme necessário. Alguns de vocês identificam o problema? Aqui está o meu código:
constructor(private http: Http) {
var d = new Date();
var httpMethod = 'GET',
url = 'http://siglar.no/wp-json/wc/v1/orders',
ck = 'ck_1ca1c6ff1a93de4836ee52c766538043d7f15d07',
cs = 'cs_ce323425064c37688d614e4ff43a5489c6f78017',
sm = 'HMAC-SHA1',
nc = this.nonceGen(),
timestamp = Math.floor(d.getTime()/ 1000),
parameters = {
oauth_consumer_key : ck,
oauth_timestamp : timestamp,
oauth_nonce : nc,
oauth_signature_method : sm
},
// generates a RFC 3986 encoded, BASE64 encoded HMAC-SHA1 hash
encodedSignature = oauthSignature.generate(httpMethod, url, parameters, cs);
this.http.get(
url + '?oauth_consumer_key='+ck+'&oauth_timestamp='+timestamp+'&oauth_nonce='+nc+'&oauth_signature='+encodedSignature+'&oauth_signature_method='+sm
).subscribe(data => {
console.log('fetched');
console.log(data);
});
}
public nonceGen() {
let length = 32;
let text = "";
let possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(let i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
Alguém mais teve sorte com isso?