-
Notifications
You must be signed in to change notification settings - Fork 447
/
linkedin.js
51 lines (45 loc) · 2.12 KB
/
linkedin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var oauthModule = require('./oauth')
, Promise = require('./promise')
, OAuth = require('oauth').OAuth;
var linkedin = module.exports =
oauthModule.submodule('linkedin')
.definit( function () {
this.oauth = new OAuth(
this.oauthHost() + this.requestTokenPath()
, this.oauthHost() + this.accessTokenPath()
, this.consumerKey()
, this.consumerSecret()
, '1.0', null, 'HMAC-SHA1', null
, {
Accept: '/'
, Connection: 'close'
, 'User-Agent': 'Node authentication'
, 'x-li-format': 'json' // So we get JSON responses
});
})
.apiHost('https://api.linkedin.com/v1')
.oauthHost('https://api.linkedin.com')
.requestTokenPath('/uas/oauth/requestToken')
.authorizePath('/uas/oauth/authorize')
.accessTokenPath('/uas/oauth/accessToken')
.entryPath('/auth/linkedin')
.callbackPath('/auth/linkedin/callback')
.redirectToProviderAuth( function (res, token) {
res.writeHead(303, { 'Location': 'https://www.linkedin.com' + this.authorizePath() + '?oauth_token=' + token });
res.end();
})
.fetchOAuthUser( function (accessToken, accessTokenSecret, params) {
var promise = new Promise();
this.oauth.get(this.apiHost() + '/people/~:(id,first-name,last-name,headline,location:(name,country:(code)),industry,num-connections,num-connections-capped,summary,specialties,proposal-comments,associations,honors,interests,positions,publications,patents,languages,skills,certifications,educations,three-current-positions,three-past-positions,num-recommenders,recommendations-received,phone-numbers,im-accounts,twitter-accounts,date-of-birth,main-address,member-url-resources,picture-url,site-standard-profile-request:(url),api-standard-profile-request:(url,headers),public-profile-url)', accessToken, accessTokenSecret, function (err, data) {
if (err) return promise.fail(err);
var oauthUser = JSON.parse(data);
console.log(oauthUser);
promise.fulfill(oauthUser);
});
return promise;
})
.convertErr( function (data) {
var errJson = JSON.parse(data.data)
, errMsg = errJson.message;
return new Error(errMsg);
});