-
Notifications
You must be signed in to change notification settings - Fork 0
/
auth.js
73 lines (67 loc) · 2.18 KB
/
auth.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const OAuth = require('oauth'),
uuid = require('node-uuid'),
fs = require('fs'),
credentials = JSON.parse(fs.readFileSync("./config.json"));
function getAuthUrl() {
return credentials.authority + credentials.authorize_endpoint +
'?client_id=' + credentials.client_id +
'&response_type=code' +
'&redirect_uri=' + credentials.redirect_uri +
'&scope=' + credentials.scope +
'&response_mode=query' +
'&nonce=' + uuid.v4() +
'&state=abcd';
}
function getTokenFromCode(code) {
return new Promise((resolve) => {
const OAuth2 = OAuth.OAuth2;
const oauth2 = new OAuth2(
credentials.client_id,
credentials.client_secret,
credentials.authority,
credentials.authorize_endpoint,
credentials.token_endpoint
);
oauth2.getOAuthAccessToken(
code, {
grant_type: 'authorization_code',
redirect_uri: credentials.redirect_uri,
response_mode: 'form_post',
nonce: uuid.v4(),
state: 'abcd'
},
function (e, accessToken, refreshToken) {
resolve({error: e, accessToken: accessToken, refreshToken: refreshToken});
}
);
});
}
function getTokenFromRefreshToken(refreshToken, callback) {
return new Promise((resolve) => {
const OAuth2 = OAuth.OAuth2;
const oauth2 = new OAuth2(
credentials.client_id,
credentials.client_secret,
credentials.authority,
credentials.authorize_endpoint,
credentials.token_endpoint
);
oauth2.getOAuthAccessToken(
refreshToken, {
grant_type: 'refresh_token',
redirect_uri: credentials.redirect_uri,
response_mode: 'form_post',
nonce: uuid.v4(),
state: 'abcd'
},
function (e, accessToken) {
resolve({error:e, accessToken:accessToken});
}
);
})
}
module.exports = {
getAuthUrl,
getTokenFromCode,
getTokenFromRefreshToken
}