钉钉H5微应用基础学习

news2024/12/24 21:31:15

钉钉开发文档

一、使用调试工具——IDE:

1、先下载调试工具,并且新建一个企业内部应用。
如果需要管理员权限,可以自己创建一个企业。
(tips:一定要屏蔽自己创建的企业的消息,不然消息很多)
2、保证现在自己使用的node版本是16以上的,不然会报以下错误:
在这里插入图片描述
3、根据教程进行启动,我这里模拟器一直打不开,文件更改也不让保存,所以放弃
在这里插入图片描述

二、使用本地开发工具:

1、执行以下命令,安装DingTalk-Design-CLI。

npm i dingtalk-design-cli@0.20.4 -g

在这里插入图片描述

2、执行以下命令,查看是否已经成功安装DingTalk-Design-CLI。

ding -v

在这里插入图片描述

3、执行以下命令,初始化代码模版到本地。

ding  init -o h5Test -a h5 -t h5_jsapi_component_demo_vue -l javascript

在这里插入图片描述

4、执行以下命令,启动开发、调试功能。

  • 在刚刚初始化好的代码目录下执行以下命令,启动本地开发、调试。
cd h5Test
ding dev web

命令执行成功后,会默认在本地10003端口打开「H5微应用本地开发工具」,预期效果如下。
在这里插入图片描述
在这里插入图片描述

三、使用钉钉h5微应用跳转到第三方网站:

JSAPI调试

1、使用uniapp新建一个H5项目

2、安装钉钉JSAPI:

npm install dingtalk-jsapi --save

3、main.js文件引入JSAPI:

import * as dd from 'dingtalk-jsapi'; // 此方式为整体加载,也可按需进行加载

4、在vue文件中写入代码:

<template>
	<view class="content">
		<view class="text-area">
			<text class="title" v-if="isPhone">仅支持在浏览器端访问</text>
		</view>
	</view>
</template>

<script>
	import * as dd from 'dingtalk-jsapi'; // 引入钉钉JSAPI
	export default {
		data() {
			return {
				isPhone: false // 当前的设备是移动端还是pc端
			}
		},
		onLoad() {
			var info = navigator.userAgent;
			//通过正则表达式的test方法判断是否包含“Mobile”字符串
			this.isPhone = /mobile/i.test(info);
			console.log("this.isPhone",this.isPhone)
			if(this.isPhone) {
				// 获取code码,并且将code发送给后端,让后端进行用户信息的获取
				this.init()
			}
		},
		methods: {
			init() {
				let that = this
				// 企业的corpid,由前端从URL中获取。
				let corpId = that.getCorpId('corpId');
				// 通过dd.env.platform检查当前是否在钉钉环境下
				if (dd.env.platform !== "notInDingTalk") {
					dd.ready(function() {
						// 获取免登授权码
					    dd.runtime.permission.requestAuthCode({
					        corpId, // 企业id
							success: (res) => {
							    const { code } = res; // 通过该免登授权码可以获取用户身份
								that.getAuthor(code)
							},
							fail: () => {},
							complete: () => {}
						});
							
					});
				}
			},
			// 从url中获取企业的corpId
			getCorpId(key) {
				let query = window.location.search.substring(1)
				let vars = query.split("&")
				for (let i=0;i<vars.length;i++) {
					let item = vars[i].split("=")
					if(item[0] == key) return item[1]
				}
				return false
			},
			// 获取用户的信息,然后完成跳转
			getAuthor(code) {
				console.log('拿到的code',code)
				dd.biz.util.openLink({
				    url:"https://ele.qre.com.cn/login.html#/user/login", // 要打开链接的地址
				    onSuccess : function(result) {
				        /**/
				    },
				    onFail : function(err) {}
				})
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

5、打包给后端,部署到服务器端,在服务器端联调。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Burpsuite超详细安装教程

概述 Burp Suite 是用于攻击web 应用程序的集成平台&#xff0c;包含了许多工具。Burp Suite为这些工具设计了许多接口&#xff0c;以加快攻击应用程序的过程。所有工具都共享一个请求&#xff0c;并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。 接下来我来给大…

Linux4.8Nginx Rewrite

文章目录 计算机系统5G云计算第六章 LINUX Nginx Rewrite一、Nginx Rewrite 概述1.常用的Nginx 正则表达式2.rewrite和location3.location4.实际网站使用中&#xff0c;至少有三个匹配规则定义5.rewrite6.rewrite 示例 计算机系统 5G云计算 第六章 LINUX Nginx Rewrite 一、…

看完一位毕业的拼多多“P9”级别员工以及他的四页半简历,我悟了

前几天在脉脉上看到一个热帖&#xff0c;是刚从PDD毕业的P9级别员工吴可发的&#xff0c;同时附上了他的简历&#xff0c;这个简历很有意思&#xff0c;基本上和国内互联网这十多年来的发展步骤重叠&#xff0c;能够反映出&#xff0c;在这样一个跌宕起伏的时代里&#xff0c;个…

一次有关 DNS 解析导致 APP 慢的问题探究

一、业务背景 HTTTPDNS AWS Router53 APP 使用 HTTPDNS&#xff0c; 为解决 DNS 解析生效慢&#xff0c; DNS 劫持等问题。 我们 IOS 和安卓都是使用了 HTTPDNS。 域名托管在 AWS Router53。 域名有多个解析(基于延迟)&#xff0c;为了解决就近接入。 示例配置 ai.baidu.c…

网易Java后端面经(一面)

这是网易的Java一面&#xff0c;问的都很基础。 1.session过期怎么处理&#xff1f; session过期通常指用户在一段时间内没有进行任何操作而导致session失效。针对这种情况&#xff0c;可以采取以下措施&#xff1a; 1. 前端提示用户session即将过期&#xff0c;提醒其重新登录…

JavaScript对象的增强知识

Object.defineProperty ◼ 在前面我们的属性都是直接定义在对象内部&#xff0c;或者直接添加到对象内部的&#xff1a;  但是这样来做的时候我们就不能对这个属性进行一些限制&#xff1a;比如这个属性是否是可以通过delete删除的&#xff1f;这个属性是否在for-in遍历的时候…

微信能取代对讲机吗?区别在哪?

对讲机和微信的区别在哪&#xff1f;为什么大家在通讯方面选择对讲机而不是微信&#xff1f; 微信作为社交软件在多个领域都有着广泛的应用&#xff0c;不过在对讲机行业也在讨论一个话题&#xff1a;微信能否取代对讲机&#xff1f;下面河南宝蓝小编就和大家聊聊这个话题。 …

基于redis实现秒杀并防止超卖

基于redis实现秒杀并防止超卖 为什么基于redis针对秒杀商品库存为一个的情况setnx代码实现测试 针对有多个库存的商品实现测试 为什么基于redis 因为所有redis的操作&#xff08;这里指的是key的操作&#xff0c;像备份落盘之类的另算&#xff09;都是单线程的&#xff0c;所以…

一文读懂:LoRA实现大模型LLM微调

LoRA大模型LLM微调 为什么要进行微调&#xff1f;LoRA思路提高权重更新效率选择低的秩 实现LoRALoRA在LLaMA实现 为什么要进行微调&#xff1f; 在快速发展的人工智能领域中&#xff0c;以高效和有效的方式使用大型语言模型变得越来越重要。 预训练的大型语言模型通常被称为优…

02-启动 Vue 项目

一. 学习目标 掌握 Vue 项目的启动 二. 学习内容 掌握 Vue 项目的启动 三. 学习过程 项目的启动也有两种方式&#xff0c;一种是通过图形界面启动&#xff0c;另一种是通过命令行启动。 1.图形界面 打开vscode编辑器&#xff0c;点击 1.文件 ——>打开文件夹&#xff0c…

springboot实现支付宝支付(沙箱环境)

springboot实现支付宝支付 1. 获取应用id,应用私钥和支付宝公钥2. 开始开发3. 内网穿透4. 测试支付功能 1. 获取应用id,应用私钥和支付宝公钥 进入支付宝控制台:https://open.alipay.com/develop/manage 找到沙箱 这里可以看到应用id 可以看到应用私钥和支付宝公钥,获取这…

Zoho:集成ChatGPT、开发大型语言模型,加紧布局AI+SaaS

在企业的数字化转型进程中&#xff0c;管理层和员工的数字化意识会随着建设的推进而不断提高&#xff0c;对于办公场景的数字化应用需求也不断产生。传统的办公系统建设中&#xff0c;系统的应用能力需要支撑越来越丰富的场景需求。 《今日人工智能》采访到Zoho中国VP兼SaaS事业…

【编程语言 · C语言 · for语句】

for 语句 C语言中&#xff0c;使用for语句也可以控制一个循环&#xff0c;并且在每一次循环时修改循环变量。在循环语句中&#xff0c;for语句的应用最为灵活&#xff0c;不仅可以用循环次数已经确定的情况&#xff0c;而且可以用于循环次数不确定而只给出循环结束条件的情况。…

jenkins构建pipline无法执行shell命令原因

问题表现 新的服务器上&#xff0c;新安装的jenkins&#xff0c;在上面创建了一个pipline项目&#xff0c;脚本里有shell命令&#xff0c;但是jenkins每次执行都卡住&#xff0c;经过尝试&#xff0c;无论多简单的命令都执行不了&#xff0c;cp&#xff0c;mv等都不行&#xf…

华为路由器:ospf协议三张表及邻居建立过程

说明&#xff1a;本篇接上一篇继续讲解 拓扑图 为了方便&#xff0c;我把R1/2/3/4/5的router id改成了回环网卡的IP。 ospf协议三张表 邻居表&#xff08;neighbortable&#xff09; OSPF用邻居机制来发现和维持路由的存在&#xff0c;邻居表存储了双向通信的邻居关系OSPF路…

矩形图:数据之美在图形中展现

在当今信息爆炸的时代&#xff0c;数据已经成为决策和洞察的重要基石&#xff0c;但海量的数据如果不经过整理和呈现&#xff0c;往往难以得出有意义的结论。这时候&#xff0c;可视化工具的作用就变得尤为重要了。在众多可视化形式中&#xff0c;矩形图以其简洁直观的特点受到…

团队管理之性能实施团队日志9

最近项目进入胶着状态。 混合场景在有些项目组里已经可以开始了&#xff0c;但还是有两三个项目组现在是完全没办法混合起来的。 本周计划是把基准测试、容量测试跑完&#xff0c;稳定性测试每个项目组至少能跑一遍。 但是从进度上来看&#xff0c;容量测试至少有四个系统不能跑…

各类动态路由协议汇总简介

目录 一、前言 二、OSPF协议 &#xff08;一&#xff09;OSPF是什么 &#xff08;二&#xff09;OSPF的工作原理 &#xff08;三&#xff09;OSPF的特点 &#xff08;四&#xff09;OSPF的使用 &#xff08;五&#xff09;OSPF的优点 &#xff08;六&#xff09;总结 …

ROS——从深度图转换到octomap(C++)

文章目录 介绍环境准备三维灰度栅格图三维RGB栅格图对点云进行过滤处理参考介绍 八叉树是用于在3D视觉中细分空间的数据结构。每个立方体都可以逐级地细分为8个子立方体,直到达到了给定的最小体积(体素)尺寸。且该最小体积(体素)决定了八叉树的分辨率。 octomap的作用:…