注意:使用钉钉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.将登陆后的信息返回给前端,再保存起来