1.首先引用两个钉钉的js
<script type="text/javascript" src="http://g.alicdn.com/dingding/open-develop/1.6.9/dingtalk.js"></script>
<script type="text/javascript" src="http://g.alicdn.com/dingding/dingtalk-pc-api/2.3.1/index.js"></script>
2.判断pc端还是移动端的钉钉(此例子是Vue操作,React类似)
mounted(){
if(DingTalkPC.ua.isDesktop&&DingTalkPC.ua.isInDingTalk){//PC端钉钉执行此方法
let surl=window.location.href;
$.ajax({
method: 'post',
url: author+'config',
data:{
key:corpId,
url:surl
},
success: function(data) {
dd.config({
agentId:data.agentid, // 必填,微应用ID
corpId: data.corpid,//必填,企业ID
timeStamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.noncestr, // 必填,生成签名的随机串
signature: data.sign, // 必填,签名
type:0, //选填,0表示微应用的jsapi,1表示服务窗的jsapi,不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList : [ 'runtime.permission.requestAuthCode' ] // 必填,需要使用的jsapi列表,注意:不要带dd。
});
DingTalkPC.runtime.permission.requestAuthCode({
corpId: data.corpid, //企业ID
onSuccess: function(result) {
this.CodeFunc(result.code)
//alert(JSON.stringify(result))
/*{
code: 'hYLK98jkf0m' //string authCode
}*/
}.bind(this),
onFail : function(err) {}
})
}.bind(this),
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus + ' ' + errorThrown);
}
});
}
dd.ready(function(){//移动端钉钉执行此方法
dd.runtime.permission.requestAuthCode({
corpId:corpId,
onSuccess: function(result) {
this.CodeFunc(result.code)
/*{
code: 'hYLK98jkf0m' //string authCode
}*/
}.bind(this),
onFail : function(err) {
alert(err)
}
});
}.bind(this))
)
3根据获取到的Code来获取userid
CodeFunc(e){
$.ajax({
method: 'post',
url: author+'userinfo',
data:{
code:e,
},
success: function(data) {
alert(data)
alert(JSON.parse(data).userid)
}.bind(this),
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus + ' ' + errorThrown);
}
});
}
4.最后根据userid来进行登录操作