web PC端和移动端钉钉免登 js

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来进行登录操作

你可能感兴趣的:(react,vue,javascript)