笔者最近在对接公司的h5插件,需要将普通钉钉里的插件,适配到专有钉钉,中间颇有波折,所以记录下来,以供大家参考。
普通钉钉
1.1、sso跳转页面
一般从钉钉的插件中跳转到我们的h5,需要路由中增加一个ssoRedirector页面,也就是我们的重定向页面,经过这个页面获取到钉钉的授权码后才能获取到我们后端的token,然后跳转到首页。
1.2、sso页面获取钉钉权限
获取钉钉的授权码,首先需要引入钉钉的jsapi,我们代码中引入dingtalk-jsapi。
import * as dd from "dingtalk-jsapi"//或者<script></script>引入
。。。。。。。
dd.ready(function() {
dd.runtime.permission.requestAuthCode({
corpId: this.corpId,//企业id
onSuccess: function (info) {
console.log('info', info)//info里包含code ,code就是需要的授权码
},
onFail: function (err) {
reject(err)
}
})
})
获取到此授权码后,直接用来获取后端提供的sso接口,此接口应该返回相应的token,有了token新建一个url,将token以及其他的参数拼到链接后,然后window.location.replace(url),就完成相应的流程。
专有钉钉
专有钉钉和普通钉钉流程类似,但是在获取授权码这一块有些许不同。
2.1、专有钉钉sso页面获取钉钉权限
<script src="https://g.alicdn.com/gdt/jsapi/1.9.43/index.js"></script> //html中引入专有钉钉api ,也可以直接import
dd.getAuthCode({ //专有钉钉直接dd.getAuthCode就行
corpId: outThis.corpId //企业id
}).then(info => {
console.log('info', info)//通过code获取城管token和用户信息
。。。。。。
}).catch(err => {
reject(err)
})