注意:使用钉钉js-api提供的获取免登授权码接口获取CODE,此jsapi无需鉴权,也就是说不必调用DingTalkPC.config鉴权了!!!(因为没太注意官方文档,被如此简单的东西困扰了大半天)
直接用官方提供的jsapi,在操作之前,区分浏览器环境(如果是从钉钉应用中进入的话再引入jsapi,如果不是则不需引入)、定义企业id(直接在开放平台获取)
1.获取code
DingTalkPC.runtime.permission.requestAuthCode({
corpId: "corpid" ,//企业id
onSuccess: function(result) {
/*{
code: 'hYLK98jkf0m' //string authCode
}*/
},
onFail : function(err) {}
})
2.拿到code(有效期只有5分钟并且刷新一次获取一次,可能有限制,建议存redis或者cookie存起来),将code和corpid传给后台
3.后台接到code和corpid后再请求接口(此接口为code换取用户身份的接口,也就是获取用户信息的,请求参数就是url上那几个值)
https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明
参数 | 参数类型 | 必须 | 说明 |
access_token | String | 是 | 调用接口凭证 |
code | String | 是 | requestAuthCode接口中获取的CODE |
返回结果
正确时返回示例如下:
{
"errcode" : 0 ,
"errmsg" : "ok" ,
"userid" : "USERID" ,
"deviceId" : "DEVICEID" ,
"is_sys" : true ,
"sys_level" : 0 | 1 | 2
}
4.拿到userid与数据库作对比
5.将登陆后的信息返回给前端,再保存起来