Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. exports.authenticate = function (req, res, cb) {
  2. var err = null,
  3. cookieName = 'linkedin_oauth_' + apiKey,
  4. cookie = req.cookies[cookieName];
  5.  
  6. if (cookie) {
  7. var credentials = JSON.parse(cookie);
  8.  
  9. if (credentials.signature_version === '1') {
  10. var sigOrder = credentials.signature_order;
  11. if (sigOrder && util.isArray(sigOrder)) {
  12. var baseString = '';
  13. var i, key;
  14.  
  15. for (i = 0; i < sigOrder.length; i++) {
  16. key = sigOrder[i];
  17. if (credentials[key]) {
  18. baseString += credentials[key];
  19. } else {
  20. err = 'Invalid Linkedin key in signature order';
  21. break;
  22. }
  23. }
  24.  
  25. if (!err) {
  26. var hmac = crypto.createHmac('sha1', apiSecretKey);
  27. var sig = hmac.update(baseString).digest('base64');
  28. if (sig === credentials.signature) {
  29. var ao = new OAuth.OAuth('', accessTokenUrl, apiKey, apiSecretKey,
  30. '1.0a',
  31. null, credentials.signature_method);
  32.  
  33. var params = {
  34. xoauth_oauth2_access_token: credentials.access_token
  35. };
  36.  
  37. ao.post(accessTokenUrl, null, null, params, null,
  38. function (results, data) {
  39. if (data) {
  40. var r = querystring.parse(data);
  41. r.member_id = credentials.member_id;
  42. cb(null, r);
  43. return;
  44. } else {
  45. err = 'Likedin access token not returned';
  46. }
  47. });
  48. } else {
  49. err = 'Linkedin signature mismatch';
  50. }
  51. }
  52. } else {
  53. err = 'Invalid Linkedin signature order';
  54. }
  55. } else {
  56. err = 'Invalid Linkedin cookie version: ' + credentials.signature_version;
  57. }
  58. } else {
  59. err = 'Linkedin Cookie not set';
  60. }
  61.  
  62. if (err) {
  63. cb(err, {});
  64. }
  65. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement