判断当前是否为钉钉环境

在浏览器环境中调用 dd(钉钉 JSAPI)获取授权码时,若不在钉钉客户端内会抛出异常。为避免此问题,我们可先封装一个判断当前是否运行于钉钉环境的工具函数。

复制代码
import * as dd from 'dingtalk-jsapi';

/**
 * 判断当前是否为钉钉环境
 * @returns {boolean}
 */
export const isDingTalkEnv = () => {
    return dd.env.platform !== 'notInDingTalk';
};

使用示例:

复制代码
import { isDingTalkEnv } from "@/utils/dingTalk.js";

const loginByDingTalk = async () => {
  if (isDingTalkEnv()) {
    try {
      const codeRes = await dd.requestAuthCode({
        corpId: corpId,
        clientId: clientId
      });
      await userStore.dingTalkLogin(codeRes.code);
      const query = route.query;
      const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
        if (cur !== "redirect") {
          acc[cur] = query[cur];
        }
        return acc;
      }, {});
      router.push({ path: redirect.value || "/", query: otherQueryParams });
    } catch (e) {
      console.error(e);
    }
  } else {
    console.log('当前非钉钉环境');
  }
};

通过 dd.env.platform 可以判断当前页面是否运行在钉钉容器中,从而决定是否调用钉钉相关 API,有效避免异常和兼容性问题。该方法适用于需要钉钉上下文支持的功能调用场景。

相关推荐
草莓熊Lotso2 小时前
《算法闯关指南:优选算法--二分查找》--23.寻找旋转排序数组中的最小值,24.点名
开发语言·c++·算法·1024程序员节
用户84298142418102 小时前
JavaScript数据类型
javascript
非凡ghost3 小时前
WinMute(自动锁屏静音软件) 中文绿色版
前端·javascript·后端
foundbug9993 小时前
C# 实现 Modbus TCP 通信
开发语言·tcp/ip·c#
郝学胜-神的一滴3 小时前
主成分分析(PCA)在计算机图形学中的深入解析与应用
开发语言·人工智能·算法·机器学习·1024程序员节
over6973 小时前
JavaScript变量声明:var、let、const的完整指南
javascript
7ayl3 小时前
Vue3 - Reactivity的核心流程
前端·vue.js
The 旺3 小时前
【AI编程实战】零基础用ChatGPT+Cursor开发完整Web应用:30分钟从idea到上线
前端·chatgpt·ai编程
JuicyActiveGilbert3 小时前
【Python进阶】第2篇:单元测试
开发语言·windows·python·单元测试
sulikey3 小时前
Qt 入门简洁笔记:信号与槽
前端·c++·笔记·qt·前端框架·1024程序员节·qt框架