专有钉钉H5开发过程以及踩坑记录

2,697 阅读1分钟

大概业务以及过程

安装gdt-jsapi

  • NPM 安装
npm install --save gdt-jsapi
# or
yarn add gdt-jsapi 
  • CDN 引入
<script src="https://g.alicdn.com/gdt/jsapi/1.9.22/index.js"></script>

如果 JSAPI 调用在页面初始化时就需要调用,则需要在dd.ready中进行调用。 小程序下需要import引入JSAPI依赖,H5通过CDN方式引入,不需要单独引入import

判断是否专有钉钉环境

  1. 官方提供的jsapi中的getUserAgent(我失败了,具体不知道)
dd.getUserAgent().then(res => {
console.log(res);
}).catch(err => {
console.error(err)
})
  1. navigator.userAgent 设备判断 在跨平台,各种浏览器,移动设备兼容的时候,经常要根据设备、浏览器做特定调整,所以判断设备和浏览器的工作,经常会用到,这里做一下总结

判断设备,区分Android,iphone,ipad和其它

// 获取
let ua = navigator.userAgent.toLowerCase();
if (ua.match(/TaurusApp/i) != "taurusapp") {
    // taurusapp专有钉钉环境
}

免登

  1. 获取免登授权码getAuthCode,参数corpId

image.png

dd.getAuthCode({corpId : "************"}).then((result) =>{
    if (result) {
        console.log(JSON.stringify(result, null, null));
        // code: 'hYLK98jkf0m' //string authCode
    }
})
  1. 获取access_token (后端需求请求的接口,这边主要讲解前端,后端请查询官方文档) 【注意】正常情况下 access_token 有效期为7200秒,有效期内重复获取返回相同结果,并⾃动续期。

  2. 获取用户详情(后端需求请求的接口,这边主要讲解前端,后端请查询官方文档) 后端请求后返回格式如下。

请求:参数为上面请求getAuthCode返回的code
{
    "success": true, 
    "content": {
        "responseMessage": "成功", 
        "data": {
            "account": "pishi.hy", 
            "accountId": 93, 
            "clientId": "mozi-developer-center", 
            "employeeCode": "pishi.hy", 
            "lastName": "洪阳", 
            "namespace": "local", 
            "nickNameCn": "洪阳", 
            "openid": "6f1a885a4020f3624b71570b74925d7b", 
            "realmId": 57, 
            "realmName": "绣花针测试租户", 
            "tenantUserId": "57$93"
        }, 
        "responseCode": "0"
    }
}