查阅钉钉提供的开发文档,发现了三种免登录API接口
当然,在使用之前还是要先下载钉钉对应的依赖包 dingtalk-jsapi ,并在页面内引入
1. dd.requestAuthCode
dd.requestAuthCode({
corpId: config.corpId,
clientId: config.clientId,
onSuccess: function (result) {
console.log('result', result);
return result.code
},
onFail: function (err) {
return err
},
});
2. dd.getOperateAuthCode
dd.getOperateAuthCode({
corpId: 'xxxxxxxxxxxxxx',
agentId: '1111133322222',
success: (res) => {
uni.showToast({ title: res.code , icon: 'none' })
},
fail: (err) => {
uni.showToast({ title: 'err'+ err , icon: 'none' })
},
complete: () => {},
});
3. dd.getAuthCode
dd.getAuthCode({
corpId: config.corpId,
success: (res) => {
const data = { authCode: res.code, platform: 'DingTalk' }
$login(data).then((result) => {
setToken(result.token)
setId(result.userid)
}).catch((err) => {
uni.showToast({ title: '登录失败!'+ JSON.stringify(err) , icon: 'none', duration: 3000 } )
})
},
fail: (err) => {
uni.showToast({ title: 'err'+ JSON.stringify(err) , icon: 'none', duration: 3000 }
)},
complete: () => {},
});
我用的是第三个接口实现的功能,首先需要去申请一个 corpId去关联,然后调用接口的时候把 corpId传入进去
在成功回调 success 内,会返回当前用户对应的 code 加密字符
得到code后,调取后端提供的接口,把对应的code传入,调取通过,后端会返回 token 等信息
存入 token,以便后面调取接口的时候使用