注意:使用钉钉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 |
返回结果
正确时返回示例如下:
1
2
3
4
5
6
7
8
|
{
"errcode"
:
0
,
"errmsg"
:
"ok"
,
"userid"
:
"USERID"
,
"deviceId"
:
"DEVICEID"
,
"is_sys"
:
true
,
"sys_level"
:
0
|
1
|
2
}
|
4.拿到userid与数据库作对比
5.将登陆后的信息返回给前端,再保存起来