关于钉钉微应用免登录踩坑开发记录

免登录流程简单说明(若不需要使用钉钉jsapi,则暂不需要鉴权dd.config()):
1.在钉钉管理后台拿到cropid,作为参数,前台处理获得code:

dd.runtime.permission.requestAuthCode({
          corpId: corpId, // 企业id
          onSuccess: function (info) {
            const code = info.code // 通过该免登授权码可以获取用户身份
            }
          })

2.从钉钉管理后台自建应用里拿到Appkey和Appsecret,后台处理接口拿到access_token
3.将前台获取的code传给后台,后台利用code和access_token就可以返回钉钉员工id,即userid
4.免登完成

说明:userid是员工账号的唯一标识,一旦生成不支持修改;可以登录【企业管理后台(oa.dingtalk.com)】-【通讯录】-【找到该员工】-【点击该员工】查看

最后附上伪代码:

const corpId = to.query.corpid;  
//在自建应用开发管理应用首页地址添加如下http://xxx.xxx.x.xx:8080?corpid=$CORPID$
//就可以通过query拿到corpid,也可以写死,笔者基于公司项目,只拿一次corpid去做判断
//即第一次进入页面时拿到corpid调取后台接口处理免登,其他页面拿不到corpid则不会调取后台接口直接走token
//token失效再回来拿去corpid,重复步骤
dd.ready(function () {
        dd.runtime.permission.requestAuthCode({
          corpId: corpId, // 企业id
          onSuccess: function (info) {
            const code = info.code // 通过该免登授权码可以获取用户身份
            //console.log(code)
            xxxxx(code).then(res => {  //xxxxx为后台接口名称
              // alert(JSON.stringify(res))
              if() {
              ......  //这里就可以做判断token存在与否,或者登录跳转等语句
              } else {
              ......
              next();
              }
            });
          },
          onFail: function (err) {
            console.log(err)
          }
        });

      });

记录开发过程中遇到的问题:
问题:后台返回登陆失败,失败原因是IP不在白名单
解决方案:在自建应用开发管理服务器出口IP添加IP即可,若提示“为保证企业自建应用安全,同一个IP只能被一个企业使用,该自建应用与后台测**限公司使用的IP相同。点击查看 解决办法”,则将IP最后改为*即可,即“1.1.1.✳”就可以

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