二、实现钉钉免登流程
免登流程分四步:1、前端获取钉钉免登授权码code;2、后端获取access_token;3、使用授权码code和access_token换取用户userid;4、通过access_token和userid换取用户详情userinfo。
前端获取授权码code。
// 获取当前网页的url:/?corpid=ding46a9582af5b7541b35c2f4657eb6378f
var currentUrl = ()
$("#url").append(currentUrl)
// 解析url中包含的corpId
var corpId = currentUrl.split("corp#corpId").append(corpId)
// 钉钉sdk初始化:参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。
(function () {
// 使用SDK 获取免登授权码
({
corpId: 'dingovyrjosjwioznxqn',
onSuccess: function (result) {
alert((result));
var code = ;
//$.get("http://49.232.56.68:8006/get/user",'code='+,function(response){
$.get("http://49.232.56.68:8006/get/user?code=" + code, function (response) {
var response = (response)
// 下面的业务根据自己的需求来写
if () {
for (item in ) {
$("#result").append("
\t[user 属性] " + item + " : " + [item] + "")}
}
});
},
onFail: function(err) {
alert('fail: ' + (err)); //处理失败的情况
},
});
});
// 如果没有走ready方法的话会走error方法。
// (function(error){
((error) => {
alert('dd error: ' + (error));
alert(`dd error: ${(error)}`);
});
后台获取access_token,然后获取userId,最后换取userInfo。
class AdminUser(BaseHandler):
def get(self):
info = self.request.arguments
code = self.get_argument("code", None)
# 获取access_token
AppKey = "ding4itesoimljq9ksmz"
AppSecret = "BW8XFsbesRJdOjmt_peYOQBTwVWUkQKONxZ2_2_fXhBQjmgq2Q6tRWrq867l84ht"
url = "https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}".format(AppKey, AppSecret)
resp = requests.get(url)
resp = ()
access_token = resp["access_token"]
# 获取userId
url1 = "/user/getuserinfo?access_token={0}&code={1}".format(access_token, code)
resp1 = (url1)
resp1 = ()
# 获取userInfo
url2 = "/user/get?access_token={0}&userid={1}".format(access_token, resp1["userid"])
resp2 = (url2)
resp2 = ()
return (({"status": "success", "userinfo": resp2}))
三、获取钉钉后台人员
四、