判断当前是否为钉钉环境

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

相关推荐
三小尛几秒前
C++友元
开发语言·c++·算法
恋猫de小郭3 分钟前
用 AI 把一个五年前的 RN 项目,从 0.61.3 升级到 0.74.0 是一种什么样的体验
android·前端·react native
小小洋洋10 分钟前
笔记:C语言中指向指针的指针作用
c语言·开发语言·笔记
子洋11 分钟前
本地安装 QuickJS 与 入门示例
前端·javascript·后端
Mike_jia12 分钟前
Gogs:极简自建Git服务神器——从零构建企业级代码管理平台
前端
Ronin-Lotus13 分钟前
上位机知识篇---脚本文件
linux·前端·chrome·终端命令·脚本文件
前端小巷子23 分钟前
Vue computed 与 methods 的本质差异
前端·vue.js·面试
wjs20241 小时前
正则表达式 - 示例
开发语言
懷淰メ1 小时前
日常--详细介绍qt Designer常用快捷键(详细图文)
开发语言·qt·pyqt·快捷键·qtdesigner·ui设计·qt设计师
许野平1 小时前
Rust:如何访问 *.ini 配置文件?
开发语言·数据库·rust·ini·configparser