判断当前是否为钉钉环境

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

相关推荐
初恋叫萱萱10 小时前
构建高性能生成式AI应用:基于Rust Axum与蓝耘DeepSeek-V3.2大模型服务的全栈开发实战
开发语言·人工智能·rust
cyforkk11 小时前
12、Java 基础硬核复习:集合框架(数据容器)的核心逻辑与面试考点
java·开发语言·面试
我材不敲代码15 小时前
Python实现打包贪吃蛇游戏
开发语言·python·游戏
2501_9209317016 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
身如柳絮随风扬16 小时前
Java中的CAS机制详解
java·开发语言
0思必得017 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
韩立学长17 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
东东51618 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
froginwe1118 小时前
Scala 循环
开发语言
catino18 小时前
图片、文件的预览
前端·javascript