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!

leonardosalatino Rookie Asked on September 9, 2020 in SuiteTalk.
Add Comment
6 Answers

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

Intermediate Answered on September 10, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.