RE: TBA Authorization Flow ERROR on step 1
Hi,
I’m facing an error on step 1 of “TBA Authorization Flow”. In the login audit trail the error is “MissingRequiredParameter” but already checked that all parameters are ok. I mean, actually it is only a POST request with one header parameter for authorization, here is the header log from axios:
_header: ‘POST /rest/requesttoken HTTP/1.1\r\n’ +
‘Accept: application/json, text/plain, */*\r\n’ +
‘Content-Type: application/json;charset=utf-8\r\n’ +
‘Authorization: OAuth realm=”TSTDRV2222222″, oauth_callback=”http%3A%2F%2Flocalhost%3A%2A”, oauth_consumer_key=”c22222222222222222222222222222222222222222222222222222226″, oauth_nonce=”fSB52CCYbuVWtoUBk6ci3rvZXTBv7Upb”, oauth_signature=”%2FxaMWVqkDHo2Y%2BGY98QIpLXG2SjeJQ0%2FUheu0RIx8tw%3D”, oauth_signature_method=”HMAC-SHA256″, oauth_timestamp=”1599683411″, oauth_version=”1.0″\r\n’ +
‘User-Agent: axios/0.20.0\r\n’ +
‘Content-Length: 2\r\n’ +
‘Host: tstdrv2222222.restlets.api.netsuite.com\r\n’ +
‘Connection: close\r\n’ +
‘\r\n’,
Do you know what may be wrong?
Thanks!
Hi leonardosalatino,
I just remembered this – here’s a Pre-Request Script that sets everything up in Postman. Then you just need to set the Authorization header to {{auth}}.
// SET THESE VALUES const company_id = ''; const consumer_key = ''; const consumer_secret = ''; pm.collectionVariables.set("company_id", company_id); pm.collectionVariables.set("consumer_key", consumer_key); pm.collectionVariables.set("consumer_secret", consumer_secret); pm.collectionVariables.set("state", state); const url = `https://${company_id.toLowerCase()}.restlets.api.netsuite.com/rest/requesttoken`; const callback = 'http://localhost'; const nonce = Math.random().toString().substring(2); const d = new Date(); const timestamp = Math.round(d.getTime() / 1000); let params = `oauth_callback=${encodeURIComponent(callback)}&oauth_consumer_key=${consumer_key}&oauth_nonce=${nonce}&oauth_signature_method=HMAC-SHA256&oauth_timestamp=${timestamp}`; let sig_string = `POST&${encodeURIComponent(url)}&${encodeURIComponent(params)}`; let sha256digest = CryptoJS.HmacSHA256(sig_string, consumer_secret + '&'); let base64sha256 = CryptoJS.enc.Base64.stringify(sha256digest); let auth = `OAuth oauth_consumer_key="${consumer_key}", oauth_nonce="${nonce}", oauth_timestamp="${timestamp}", oauth_signature_method="HMAC-SHA256", oauth_callback="${encodeURIComponent(callback)}", oauth_signature="${encodeURIComponent(base64sha256)}"`; pm.collectionVariables.set("auth", auth);
Thanks,
Chris