Я бьюсь об этом весь день. Я мог бы действительно использовать некоторую помощь. Мне нужно сгенерировать подпись, которая соответствует правильно, чтобы отправить в мою форму через REST Wordpress API. Я создал интерфейс в React.
Я создал отдельный файл API. js, чтобы попытаться это сделать. Я проверил на Почтальоне, и это работает ... Я просто не знаю, что они делают, чтобы заставить его работать! Я пытался использовать oauth-подпись NPM безрезультатно.
import oauthSignature from 'oauth-signature'
const URL = 'http://localhost:8000/wp-json'
const FORMURL = 'gf/v2/forms'
const CUSTOMFORM = '/1/entries'
const httpMethod = 'POST'
const FULLURL = URL+FORMURL+CUSTOMFORM
const randomString = (stringLength) => {
let charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz'
let stringOutput = ''
while (stringLength > 0) {
let bytes = new Uint8Array(16);
let random = window.crypto.getRandomValues(bytes);
random.forEach(function(c) {
if (stringLength === 0) {
return;
}
if (c < charset.length) {
stringOutput += charset[c];
stringLength--;
}
});
}
return stringOutput;
}
const PARAMETERS = {
oauth_consumer_key: CONSUMERKEY,
oauth_nonce: randomString(11),
oauth_timestamp: Math.floor(Date.now()/1000),
oauth_signature_method: 'HMAC-SHA1',
oauth_version: '1.0',
}
let ENCODEDSIGNATURE = oauthSignature.generate(httpMethod, URL+FORMURL, PARAMETERS, CONSUMERSECRET)
let SIGNATURE = oauthSignature.generate(httpMethod, FULLURL, PARAMETERS, CONSUMERSECRET, { encodeSignature: false })
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", `OAuth oauth_consumer_key="${PARAMETERS.oauth_consumer_key}",oauth_signature_method="HMAC-SHA1",oauth_timestamp="${PARAMETERS.oauth_timestamp}",oauth_nonce="${PARAMETERS.oauth_nonce}",oauth_version="${PARAMETERS.oauth_version}",oauth_signature="${ENCODEDSIGNATURE}"`);
var raw = JSON.stringify({"3":"rod@test.com 3","5":"Store Name 5","6":"Store Address 6","7":"Account Number 7","4.3":"Roderick Cardenas 4.3"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
const postForm = () => {
return fetch("http://localhost:8000/wp-json/gf/v2/forms/1/entries", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
}
'''
Any help would be appreciated, not sure I can get any on such a specific thing. I feel like it has to do with how the signature is created...