dingtalk_suite
Advanced tools
Comparing version 0.1.6 to 0.1.7
32
index.js
@@ -5,2 +5,3 @@ var agent = require('superagent'); | ||
var BASE_URL = 'https://oapi.dingtalk.com/service'; | ||
var SSO_BASE_URL = 'https://oapi.dingtalk.com'; | ||
var TICKET_EXPIRES_IN = 1000 * 60 * 20 //20分钟 | ||
@@ -14,2 +15,4 @@ var TOKEN_EXPIRES_IN = 1000 * 60 * 60 * 2 - 10000 //1小时59分50秒.防止网络延迟 | ||
this.suite_secret = conf.secret; | ||
this.SSOSecret = conf.SSOSecret; | ||
this.corpid = conf.corpid; | ||
this.ticket_expires_in = TICKET_EXPIRES_IN; | ||
@@ -30,2 +33,31 @@ this.token_expires_in = conf.token_expires_in || TOKEN_EXPIRES_IN; | ||
Api.prototype.getSSOToken = function(callback) { | ||
var self = this; | ||
console.log('corpid', self.corpid); | ||
console.log('corpsecret', self.SSOSecret); | ||
agent.get(SSO_BASE_URL + '/sso/gettoken') | ||
.query({ | ||
corpid: self.corpid, | ||
corpsecret: self.SSOSecret | ||
}) | ||
.end(util.wrapper(callback)); | ||
}; | ||
//登录 | ||
Api.prototype.getSSOUserInfoByCode = function(code, callback) { | ||
var self = this; | ||
self.getSSOToken(function(err, token) { | ||
if (err) { | ||
return callback(err); | ||
}; | ||
console.log('SSO token', token); | ||
agent.get(SSO_BASE_URL + '/sso/getuserinfo') | ||
.query({ | ||
code: code, | ||
access_token: token.access_token | ||
}) | ||
.end(util.wrapper(callback)); | ||
}); | ||
}; | ||
Api.prototype.getLatestTicket = function(callback) { | ||
@@ -32,0 +64,0 @@ var now = Date.now(); |
{ | ||
"name": "dingtalk_suite", | ||
"version": "0.1.6", | ||
"version": "0.1.7", | ||
"main": "index", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -1,5 +0,7 @@ | ||
# dingtalk suite(测试中...) | ||
钉钉套件主动调用api, 自带缓存。 | ||
# dingtalk suite | ||
钉钉套件主动调用**API**, 自带**cache**。 | ||
回调server API见:[dingtalk_suite_callback](https://github.com/hezedu/dingtalk_suite_callback) | ||
配和企业号 API:[dingtalk_enterprise](https://github.com/hezedu/dingtalk_enterprise)可实现ISV套件控制企业号。 | ||
##安装 | ||
@@ -12,16 +14,32 @@ `npm install dingtalk_suite` | ||
var conf = { | ||
suiteid: 'suitexpiygdnz51hsbbhj', | ||
secret: 'C1oXyeJUgH_QXEHYJS4-Um-zxfv_yGSpTs3Yq6un6UV_zAlEpt-6np3fXskv5dGs', | ||
suiteid: 'suitexpiygdnxxxxx', | ||
secret: 'C1oXyeJUgH_QXEHYJS4-Um-zxfxxxxxxxxxxxxxxxxxx-6np3fXskv5dGs', | ||
corpid: 'dingxxxxxxxxxxxxxxx', | ||
SSOSecret:'C1oXyeJUgH_QXEHYJS4-Um-zxfxxxxxxxxxxxxxxxxxx-6np3fXskv5dGs', | ||
getTicket: function(callback){ | ||
//从数据库中取出Tikcet,返回的data样式为:{value: 'xxxxxxx', expires:1452735301543} | ||
//ticket从 dingtalk_suite_callback 处获得 | ||
callback(null, data); | ||
fs.readFile(this.suiteid + 'ticket.txt',function(err, data){ | ||
if(err){ | ||
return callback(err); | ||
} | ||
data = JSON.parse(data.toString()); | ||
callback(null, data); | ||
}); | ||
}, | ||
getToken: function(callback){ | ||
//从数据库中取出Token,返回的data样式为:{value: 'xxxxxxx', expires:1452735301543} | ||
callback(null, data); | ||
fs.readFile(this.suiteid + 'token.txt',function(err, data){ | ||
if(err){ | ||
return callback(err); | ||
} | ||
data = JSON.parse(data.toString()); | ||
callback(null, data); | ||
}); | ||
}, | ||
saveToken: function(data, callback){ | ||
//存储Token到数据库中,data样式为:{value: 'xxxxxxx', expires:1452735301543//过期时间} | ||
callback(null); | ||
fs.writeFile(this.suiteid + 'token.txt',JSON.stringify(data), callback); | ||
} | ||
@@ -37,4 +55,4 @@ } | ||
api.getPermanentCode(tmp_auth_code, callback) | ||
//tmp_auth_code字符串,由 dingtalk_suite_callback 处获得。 | ||
``` | ||
tmp_auth_code字符串,由[dingtalk_suite_callback](https://github.com/hezedu/dingtalk_suite_callback)处获得。 | ||
### 获取企业号Token | ||
@@ -62,3 +80,7 @@ ```js | ||
``` | ||
### 免登CODE换取微应用管理员信息 | ||
```js | ||
//ip_whitelist为数组格式:["1.2.3.4","5.6.*.*"] | ||
api.getSSOUserInfoByCode(code, callback) | ||
``` | ||
##钉钉文档 | ||
@@ -65,0 +87,0 @@ http://ddtalk.github.io/dingTalkDoc/?spm=a3140.7785475.0.0.p5bAUd#1-isv接口调用整体流程 |
11000
196
89