-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasana_client.js
43 lines (39 loc) · 1.48 KB
/
asana_client.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
//Declare a Client Side loginWithAsana Method
//This will trigger the client side login flow
Meteor.loginWithAsana = function(options, callback) {
if (! callback && typeof options === "function") {
callback = options;
options = null;
}
var credentialRequestCompleteCallback = Accounts.oauth.credentialRequestCompleteHandler(callback);
Asana.requestCredential(options, credentialRequestCompleteCallback);
};
//Called by Meteor.loginWithAsana
Asana.requestCredential = function (options, credentialRequestCompleteCallback) {
if (!credentialRequestCompleteCallback && typeof options === 'function') {
credentialRequestCompleteCallback = options;
options = {};
}
var config = ServiceConfiguration.configurations.findOne({service: 'asana'});
if (!config) {
credentialRequestCompleteCallback && credentialRequestCompleteCallback(
new ServiceConfiguration.ConfigError());
return;
}
var credentialToken = Random.secret();
var loginStyle = OAuth._loginStyle('asana', config, options);
var loginUrl =
'https://app.asana.com/-/oauth_authorize' +
'?client_id=' + config.clientId +
'&response_type=code' +
'&redirect_uri=' + config.redirectUri +
'&state=' + OAuth._stateParam(loginStyle, credentialToken);
'&scope=default';
OAuth.launchLogin({
loginService: "asana"
,loginStyle: loginStyle
,loginUrl: loginUrl
,credentialRequestCompleteCallback: credentialRequestCompleteCallback
,credentialToken: credentialToken
});
};