判断当前是否为钉钉环境

在浏览器环境中调用 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,有效避免异常和兼容性问题。该方法适用于需要钉钉上下文支持的功能调用场景。

相关推荐
Simon523141 天前
Spring AOP 五大通知类型
java·前端·spring
Asmewill1 天前
LangGraph学习笔记八(SubGraph)
前端
叶落阁主1 天前
AntV npm 投毒复盘:一次公司私服缓存恶意包引发的账号封禁事件
前端·安全·npm
vaexu1 天前
Android 定时提醒的终极防线:我是如何用“双保险机制”攻克后台保活的?
前端
小村儿1 天前
连载11- Claude code 的 Agent Teams——当子 Agent 开始互相说话
前端·后端·ai编程
Circ.1 天前
Java 远程调用 NX 11 完整实战:参数读取、修改、STP 文件导出(附环境配置 + 源码)
java·开发语言·nx11
潍坊老登1 天前
关于 number类型从vue端传到golang后端是float而不是int的事
前端
2401_833269301 天前
【无标题】
java·开发语言
茶底世界之下1 天前
你的 Mac 里,藏着一支 AI 开发团队
前端·javascript
宇宙realman_9991 天前
420B污染度等级查询代码
java·开发语言·算法