电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

钉钉如何跳转PC浏览器免登访问苍穹

来源:金蝶云社区作者:金蝶2024-09-238

钉钉如何跳转PC浏览器免登访问苍穹

1 业务背景

       客户使用钉钉免登苍穹,目前苍穹提供与钉钉集成的标准配置方案,该方案是通过钉钉内置浏览器免登苍穹。部分客户使用钉钉免登苍穹时,希望钉钉能自动跳转到PC端浏览器免登苍穹,详见解决方案:


2 解决方案

       在了解苍穹免登原理的基础上,可以进一步对此二开,在钉钉客户端访问苍穹登录页时,增加自定义脚本拦截钉钉客户端来源的前端登录请求,然后在构造已授权的免登url并调用钉钉接口打开PC端浏览器页面。


2.1 实现步骤

       钉钉原始免登苍穹流程:钉钉点击轻应用url后,触发后端单点及免登检查,第一次不通过重定向会前端登录页,触发前端脚本构造免登授权code追加到url重定向参数后进行第二次重定向,进入到后端免登插件以及用户检查通过后登录系统。基于此编写前端脚本,拦截钉钉客户端的免登流程。

(function () {
  var loadScript = function (url, cb) {
    var script = document.createElement('script');
    script.src = url;
    var firstScript = document.getElementsByTagName('script')[0];
    firstScript.parentNode.insertBefore(script, firstScript);
    // script 加载完毕后调用方法
    script.onload = script.onreadystatechange = function () {
      if (!this.readyState     //这是FF的判断语句,因为ff下没有readyState这个值,IE的readyState肯定有值
        || this.readyState == 'loaded' || this.readyState == 'complete'   // 这是IE的判断语句
      ) {
        cb && cb()
      }
    };
  }
  // 登录代码加载前调用
  window.loginBeforeLoad = function (callback) {
    const ua = navigator.userAgent
    if (ua.includes('DingTalk')) { // 拦截钉钉的登录请求 - 现场可根据情况修改条件
      var jsbridge = "https://g.alicdn.com/dingding/dingtalk-jsapi/3.0.12/dingtalk.open.js";
      loadScript(jsbridge, () => {
        dd.ready(function () {
          // 获取重定向参数
          var url = new URL(location.href)
          var redirect = url.searchParams.get("redirect")
          if (!redirect) {
            document.body.innerHTML = '正在跳转到浏览器打开...没有redirect参数'
            return
          }
          var redirect_url = decodeURIComponent(redirect)
          var corpid = new URL(redirect_url).searchParams.get("corpid");
          if (!redirect) {
            document.body.innerHTML = '正在跳转到浏览器打开...没有corpid参数'
            return
          }
          // document.body.innerHTML = '正在跳转到浏览器打开...corpid:' + corpid
          // 请求用户一次性授权code
          dd.runtime.permission.requestAuthCode({ // 注意钉钉轻应用的回调域名与ip设置
            corpId: corpid,
            onSuccess: function (res) {
              var code = res.code;
              // document.body.innerHTML = '正在跳转到浏览器打开...code:' + code
              var r = redirect_url;
              r.indexOf("&code=") > -1 && (r = res.replace(/&code=/g, "&errorCode="));
              r = r.concat("&code=").concat(code) // 未处理hashtag

              document.body.innerHTML = '正在跳

钉钉如何跳转PC浏览器免登访问苍穹

1 业务背景 客户使用钉钉免登苍穹,目前苍穹提供与钉钉集成的标准配置方案,该方案是通过钉钉内置浏览器免登苍穹。部分客户使用...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信