Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exports.authenticate = function (req, res, cb) {
- var err = null,
- cookieName = 'linkedin_oauth_' + apiKey,
- cookie = req.cookies[cookieName];
- if (cookie) {
- var credentials = JSON.parse(cookie);
- if (credentials.signature_version === '1') {
- var sigOrder = credentials.signature_order;
- if (sigOrder && util.isArray(sigOrder)) {
- var baseString = '';
- var i, key;
- for (i = 0; i < sigOrder.length; i++) {
- key = sigOrder[i];
- if (credentials[key]) {
- baseString += credentials[key];
- } else {
- err = 'Invalid Linkedin key in signature order';
- break;
- }
- }
- if (!err) {
- var hmac = crypto.createHmac('sha1', apiSecretKey);
- var sig = hmac.update(baseString).digest('base64');
- if (sig === credentials.signature) {
- var ao = new OAuth.OAuth('', accessTokenUrl, apiKey, apiSecretKey,
- '1.0a',
- null, credentials.signature_method);
- var params = {
- xoauth_oauth2_access_token: credentials.access_token
- };
- ao.post(accessTokenUrl, null, null, params, null,
- function (results, data) {
- if (data) {
- var r = querystring.parse(data);
- r.member_id = credentials.member_id;
- cb(null, r);
- return;
- } else {
- err = 'Likedin access token not returned';
- }
- });
- } else {
- err = 'Linkedin signature mismatch';
- }
- }
- } else {
- err = 'Invalid Linkedin signature order';
- }
- } else {
- err = 'Invalid Linkedin cookie version: ' + credentials.signature_version;
- }
- } else {
- err = 'Linkedin Cookie not set';
- }
- if (err) {
- cb(err, {});
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement