Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Example of how to sign a request in Node.js.

This example requires that the module "date-utils" is loaded by npm. 

Node.js
function randomString(length) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
}

function createSignature(text)
{
var crypto = require('crypto');
var hash = crypto.createHash('md5').update(text).digest('hex');
return hash;
}

var token = "42f94ba7c9bi4b8887b66baa8a567c28";
console.log('Token:\n' + token);

var secret = "2c9e39f72f434a8";
console.log('Secret:\n' + secret);

var request = "http://site.meridix.se/api/customers/list";
console.log('Request URL:\n' + request);


var nonce = randomString(8);
console.log('Nonce:\n' + nonce);

require('date-utils');
var now = new Date();
var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
var timestamp = utc.toFormat('YYYYMMDDHH24MISS');
console.log('Timestamp:\n' + timestamp);

var parameters = [
'auth_nonce=' + nonce,
'auth_timestamp=' + timestamp,
'auth_token=' + token
];
parameters.sort();

var parametersConcated = parameters.join('&');
console.log('ParametersConcated:\n' + parametersConcated);

var parametersConcatedEncoded = encodeURIComponent(parametersConcated);
console.log('ParametersConcatedEncoded:\n' + parametersConcatedEncoded);

var requestEncoded = encodeURIComponent(request);
console.log('RequestEncoded:\n' + requestEncoded);

var verbRequestQuery = 'GET&' + requestEncoded + '&' + parametersConcatedEncoded + '&' + secret;
console.log('VerbRequestQuery:\n' + verbRequestQuery);

var signature = createSignature(verbRequestQuery);
console.log('Signature:\n' + signature);

var signedRequest = request + '?' + parametersConcated + '&auth_signature=' + signature;
console.log('SignedRequest:\n' + signedRequest);

 
  • No labels