前言部分

最近要开发一个企业内部应用系统

无纸化办公使用钉钉,领导想在钉钉的基础上加入我们自己的应用

引入Activiti工作流引擎开发审批立项等等业务活动,做一个大一统的系统

然后让我负责开发钉钉应用(完全懵逼),后台系统是另外一个人来写

表结构和整个系统架构由领导亲自操刀决定,包括相关文档的编写

开放平台上的说明是【H5微应用】结合

仓库代码拉下来,工程分为三个 web,server,ding-web

前后端分离,但是不使用微服务的方式(经理怕后需要拆分,还是在工程里面分包管理模块及服务)

web是后台,和钉钉应用各自一个

技术栈是MySQL,Springboot + Mybatis,Vue2 (ElementUI库,框架是Vue-Element-Admin)

然后领导前阵子自己折腾了这个钉钉应用的开发,移动端的UI库用的Vant,跟ElementUI类似,开会上演示了下画的界面

就直接拍板这套技术栈了

我的理解

然后看了钉钉应用说明介绍及应用配置

发现跟web应用开发方式差别不大

呈现的效果是手机端的,开发时要自己设置浏览器成各个手机型号的进行查看效果

强调是H5,而非Web,因为有些调用手机硬件功能的,需要使用钉钉提供的接口

然后我看接口相关的文档内容,Web工程需要加入钉钉的一个npm支持包,后台Server工程是需要加入一个SDK包

再加上应用令牌,可以实现和钉钉平台的一个交互

部署方式,就是配置一个服务IP地址和应用首页地址,然后就没了

但是要求服务地址必须是暴露在公网的,内网则是没有办法访问(待解决的部分)

首先项目能跑起来,然后要内网穿透,再到后台这里发布应用,我看到钉钉有自己做的一个内网穿透工具,要看看怎么使用

一、钉钉应用创建

需要注册钉钉账号,一般入职公司会要求下载钉钉APP,并绑定所属单位

钉钉开放平台官网

https://open.dingtalk.com/

选择【开发者后台】登录:

这里存在多个单位,【xx开发平台】是另外创建的一个测试单位,这个是找项目负责人申请加入的

进入后台面板之后,悬浮【应用开发】,点击【企业内部开发】

创建H5微应用

之后这里可以看到创建的应用

二、发布应用

在本地跑一个Vue项目

选这里配置【出口IP】和【首页地址】,这里我填的内网,试了之后是没法访问的...

再到下面【部署和发布】,只分配允许谁能访问,就没了

点击保存之后回到钉钉APP或者PC客户端

手机APP在【工作台】——【未分组的应用】里面找到刚刚发布的应用

PC客户端的不赘述了

本地的服务关了就直接访问不到了,然后还没有配置穿透,也可能是因为没穿透内网的原因

笔记暂时先写到这里

2022年09年22日更新:

bug改完了,然后折腾内网穿透的事情

内网穿透是说到钉钉提供了一个工具,然后发现配置了无法穿透

因为Ngrok通道连接始终连不上

是说工具已经失效弃用了

https://blog.csdn.net/hahahalu/article/details/126305684

在官网这里也说明了弃用。。。 

https://open.dingtalk.com/document/resourcedownload/http-intranet-penetration

然后查看了这个FRP内网穿透的文档,都看不懂在干嘛

于是改用花生壳客户端来配置

本地先随便搭建了个web能跑起来

web端口是3000

在花生壳的网页面板做一些基本配置就能建立穿透

检查是否正常访问

检查使用域名访问是否正常:

https://2c7544653v.oicp.vip/

  

然后回到钉钉管理平台,重新配置应用

部署之后再次从手机上的钉钉APP访问,访问正常

三、开发应用

官方文档地址:

https://open.dingtalk.com/document/org/develop-org-h5-micro-applications

这里官方提供了完整的示例代码

git clone https://github.com/open-dingtalk/h5app-corp-quickstart.git

  

后台配置四个关键值:

dingtalk.app_key=应用key
dingtalk.app_secret=应用密钥
dingtalk.agent_id=应用代理ID
dingtalk.corp_id=企业ID标识

  

【DingTalk】钉钉应用开发的更多相关文章

  1. 钉钉如何进行PC端开发

    前段时间,用钉钉进行了服务器端的开发,对照着官方文档,感觉还是比较顺利的.后续想有时间研究一下PC端客户端的开发,看着官方文档,说的确实是比较简练,但也确实没看太明白,废了半天劲也没成功.后来经过无数 ...

  2. C#如何在钉钉开发平台中创建部门

    钉钉是阿里巴巴专为中小企业和团队打造的沟通.协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案.通过钉钉开放平台,企业或第三方合作伙伴可以帮助企业快速.低成本的实现高质量的移动微应用 ...

  3. C#如何在钉钉开发平台

    C#如何在钉钉开发平台中创建部门   钉钉是阿里巴巴专为中小企业和团队打造的沟通.协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案.通过钉钉开放平台,企业或第三方合作伙伴可以帮助企 ...

  4. 钉钉企业应用C#开发笔记之一(免登)

    关于钉钉 钉钉是阿里推出的企业移动OA平台,本身提供了丰富的通用应用,同时其强大的后台API接入能力让企业接入自主开发的应用成为可能,可以让开发者实现几乎任何需要的功能. 近期因为工作需要研究了一下钉 ...

  5. 钉钉开发获取APPKEY, APPSECRET, CorpId和SSOSecret

    首先用自己的钉钉账号注册一个企业: https://oa.dingtalk.com/index.htm 一.获取应用APPKEY及APPSECRET方法: 1.登录钉钉开放平台创建应用: https: ...

  6. Asp.Net Core&钉钉开发系列

    阿里钉钉在商业领域的规模越来越大,基于钉钉办公的企业越来越多,将一个企业内现有用到的工具(如钉钉)能够更融入到他们的工作中,提高工作效率,那便需要开发者不断的学习.应用了,同时,个人也有一个预感,未来 ...

  7. 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化

    在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...

  8. 钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息

    最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆; 就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所 ...

  9. 【JavaWeb开发】初步实现网站应用钉钉扫码登录

    http://blog.csdn.net/baofeidyz/article/details/59059379 版权声明:转载请注明我的个人微信平台 暴沸 目录(?)[+] 写在前面:如果你还不知道钉 ...

  10. Java钉钉开发_00_资源帖

    1.源码 本系列教程的源码已上传至GitHub:  https://github.com/shirayner/DingTalk_Demo 2.官方 官方源码:https://github.com/op ...

随机推荐

  1. 虚拟机ping不通物理机 PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.

    准备做samba服务配置的时候 ping 192.168.10.1 (物理机地址) PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data. 查看自 ...

  2. python-去掉写入csv文件的多余的一行空白行

    如执行下面的代码: 1 import csv 2 3 if __name__ == "__main__": 4 5 content1 = ['hello'] 6 content2 ...

  3. Docker部署深度学习模型

    Docker部署深度学习模型 基础概念 Docker Docker是一个打包.分发和运行应用程序的平台,允许将你的应用程序和应用程序所依赖的整个环境打包在一起.比如我有一个目标检测的项目,我想分享给朋 ...

  4. ETL工具-nifi干货系列 第十四讲 nifi处理器PublishKafka实战教程

    1.kettle的kafka生产者叫kafka producer,nifi中的相应处理器为PublishKafka,如下图所示: 可以很清楚的看到PublishKafka处理器支持多个版本的kafka ...

  5. 连续段 dp - 状态转移时依赖相邻元素的序列计数问题

    引入 在一类序列计数问题中,状态转移的过程可能与相邻的已插入元素的具体信息相关. 这类问题通常的特点是,如果只考虑在序列的一侧插入,问题将容易解决. 枚举插入顺序的复杂度通常难以接受,转移时枚举插入位 ...

  6. 使用 Promise.withResolvers() 来简化你将函数 Promise 化的实现~~

    引言 在JavaScript编程中,Promise 是一种处理异步操作的常用机制.Promise 对象代表了一个尚未完成但预期将来会完成的操作的结果.在本文中,我们将探讨如何通过使用 ES2024 的 ...

  7. 【长文】带你搞明白Redis

    本文使用第一人称来介绍Redis 一.概述 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化 ...

  8. SVG <pattern> 标签的用法和应用场景

    通过使用 <pattern> 标签,可以在 SVG 图像内部定义可重复使用的任意图案.这些图案可以通过 fill 属性或 stroke 属性进行引用. 使用场景 例如我们要在 <sv ...

  9. Freertos学习:00-介绍

    --- title: rtos-freertos-000-介绍 EntryName: rtos-freertos-00-about date: 2020-06-09 23:21:44 categori ...

  10. Linux驱动中的异步函数(aio_read和aio_write)

    Linux驱动中的异步函数(aio_read和aio_write) 我们可以在signal_handler使用了read和write函数处理设备文件的读写操作.然而这两个函数可以分别用aio_read ...