记录:实现钉钉(企业内部应用)登录第三方网站

由于后台无法配合前端配置路由为history模式,故vue路由采用hash模式。但是钉钉扫码成功后会导致重定向地址格式错误:

错误格式:https://xxx.com/?authCode=xxxx#/xxxx
期望格式:https://xxx.com/#/xxxx?authCode=xxxx

解决方法

index.html同级目录新建redirect.html。扫码成功后先重定向到redirect.html,在redirect.html中重新拼接跳转地址,获取authCode。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>跳转中...</title>
</head>
<body>
  <script>
    function getQueryVariable(variable) {
      var query = window.location.search.substring(1);
      var vars = query.split("&");
      for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) { return pair[1]; }
      }
      return (false);
    }
    const code = getQueryVariable('authCode')
    if (code) {
      window.location.href = window.location.protocol + '//' + window.location.host + '/#/login?authCode=' + code
    } 
  </script>
</body>

</html>

login.vue

// 钉钉扫码登录
    dLogin() {
      const redirectUrl = encodeURIComponent(window.location.protocol + '//' + window.location.host + '/redirect.html')
      window.location.href = `https://login.dingtalk.com/oauth2/challenge.htm?redirect_uri=${redirectUrl}&response_type=code&client_id=dingbbbbbbb&scope=openid&prompt=consent&FEForceLogin=true`
    },

钉钉开发文档

参考地址:钉钉开发文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值