钉钉内部应用免密登录

1,317 阅读1分钟

免密登录:

    当用户在钉钉内部打开应用,无需输入用户名和密码,直接获取当前钉钉信息进行登录。

前端实现流程:

1.首先获取企业id并向钉钉服务器获取免密登录所需要的的code 

dd.ready(function() {    
    dd.runtime.permission.requestAuthCode({        
        corpId: "企业id", // 企业id        
        onSuccess: function(info) {            
            code = info.code, 
            goLogin(code)            
         },       
         onFail: function(fail) {         
               console.log('error')       
         }    
    })
})


补充:如果应用不止可以通过钉钉内部免密登录 那么可以判断当前浏览器标识是否为钉钉 是的话进行免密登录
window.navigator.userAgent.includes("DingTalk")

2.获取到code之后  携带code向我们自己的服务端获取当前用户的登录凭证

function goLogin(code){
    $.ajax({    
        type: "GET",    
        contentType: 'application/json; charset=UTF-8',    
        url:  `https://www.test.com/url/?code=${code}`,    
        dataType: "json",    
        async: false,    
        success: function(req) {        
            if (req.code == 0) {            
                sessionStorage.setItem('stafftoken', req.data.stafftoken);            
                window.location.href= '需要跳转的内部应用首页地址';        
            }    
        },    
        error: () => {        
            layui.use('layer', function(){            
                console.log('自动登录失败')     
            });    
        }
    })
}

3.获取用户个人信息 

通过登录凭证向服务端请求