0

I am using following code for generating digital signature to call restlet of netsuite.

var NETSUITE_ACCOUNT_ID = 'xxxxxxx' var BASE_URL = 'https://2024027.restlets.api.netsuite.com/app/site/hosting/restlet.nl' var HTTP_METHOD = 'POST' var SCRIPT_ID = '8' var OAUTH_VERSION = '1.0'; var SCRIPT_DEPLOYMENT_ID = '1' var TOKEN_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" var TOKEN_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" var CONSUMER_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" var CONSUMER_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" var text = ""; var length = 32; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

for (var i = 0; i < length; i++) {

    text += possible.charAt(Math.floor(Math.random() * possible.length));
}

var OAUTH_NONCE       = text;
var TIME_STAMP        = Math.round(+new Date() / 1000);
var data              = '';
data                  = data + 'deploy=' + SCRIPT_DEPLOYMENT_ID + '&';
data                  = data + 'oauth_consumer_key=' + CONSUMER_KEY + '&';
data                  = data + 'oauth_nonce=' + OAUTH_NONCE + '&';
data                  = data + 'oauth_signature_method=' + 'HMAC-SHA1' + '&';
data                  = data + 'oauth_timestamp=' + TIME_STAMP + '&';
data                  = data + 'oauth_token=' + TOKEN_ID + '&';
data                  = data + 'oauth_version=' + OAUTH_VERSION + '&';
data                  = data + 'script=' + SCRIPT_ID;
var encodedData       = encodeURIComponent(data);
var completeData      = HTTP_METHOD + '&' + encodeURIComponent(BASE_URL) + '&' + encodedData;
var hmacsha1Data      = CryptoJS.HmacSHA1(completeData, CONSUMER_SECRET + '&' + TOKEN_SECRET);

//var base64EncodedData = btoa(JSON.stringify(hmacsha1Data));

var base64EncodedData = CryptoJS.enc.Base64.stringify(hmacsha1Data);

var oauth_signature   = encodeURIComponent(base64EncodedData);
var OAuth             = 'OAuth oauth_signature="' + oauth_signature + '",';
OAuth                 = OAuth + 'oauth_version="1.0",';
OAuth                 = OAuth + 'oauth_nonce="' + OAUTH_NONCE + '",';
OAuth                 = OAuth + 'oauth_signature_method="HMAC-SHA1",';
OAuth                 = OAuth + 'oauth_consumer_key="' + CONSUMER_KEY + '",';
OAuth                 = OAuth + 'oauth_token="' + TOKEN_ID + '",';
OAuth                 = OAuth + 'oauth_timestamp="' + TIME_STAMP + '",';
OAuth                 = OAuth + 'realm="' + NETSUITE_ACCOUNT_ID + '"';


console.log(OAuth);

And I am receiving following response.

{"error" : {"code" : "INVALID_LOGIN_ATTEMPT", "message" : "Invalid login attempt."}}

Could any one help me please to correctly generate signature.

quarks
  • 33,478
  • 73
  • 290
  • 513
Azhar
  • 29
  • 1
  • 4
  • Take a look at https://stackoverflow.com/questions/50611578/netsuite-oauth-not-working/50628921#50628921 – bknights Nov 25 '18 at 20:50
  • didn't worked for me – Azhar Nov 26 '18 at 17:02
  • The basic idea works from node to Netsuite and from Netsuite to Netsuite. TBH your code looks like you're just jamming a bunch of stuff together and hoping. Are you basing it on any sort of spec? – bknights Nov 26 '18 at 17:28
  • I also tried PHP code and generated header but still getting the same error. I am trying to call Restlet. Calling Restlet requires OAuth header. Using above code to generate header for calling restlet from outside netsuite. – Azhar Nov 28 '18 at 08:33

0 Answers0