钉钉,浙政钉,专有钉钉 h5 免登 demo
前言
开始之前,先简单介绍下 "钉钉家族"
钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。
浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单位根据自身业务特点分别建设自建应用,最终形成全省统一的政府系统掌上协同办公平台。
浙政钉 1.0 钉钉上的一个特殊组织架构。
浙政钉 2.0 根据2020年浙江省深化“最多跑一次”改革推进政府数字化转型工作要点,为实现基本建成“掌上办公之省”年度工作目标,省大数据局联合阿里巴巴启动了“浙政钉”的迭代升级,将浙政钉从钉钉组织迁移出来,成为独立的浙政钉客户端。
专有钉钉 原名政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。
阿里专有钉钉产品简介 (注意到是SaaS版本)
简单来说,就是专有钉钉是升级版钉钉,而浙政钉则是专有钉钉 saas 化部署的一个特殊租户。
正文
本文将从 开发前置要求,本地启动步骤,部署 三个方面进行展示
开发前置要求
1 JDK8.0
2 IDEA 环境
3 创建好了的钉钉应用
4 创建好了的浙政钉(开发阶段一般由专有钉钉替代)应用
5 一台安装了 docker 的机器(非必须)
本地启动步骤
1 git 地址
https://github.com/kid626/dingding-demo.git
2 修改 application.yml 的配置
demo:
# 修改钉钉 h5 微应用的配置
ding:
appKey: "ak"
appSecret: "as"
corpId: "企业id"
agentId:
zzd:
appKey: "ak"
appSecret: "as"
corpId: 租户 id
# 专有钉钉 默认这个,浙政钉需要使用线上环境地址
domainName: "openplatform.dg-work.cn"
# 可以修改启动端口号
server:
port: 9001
3 配置内网穿透
鉴于很多开发者在临时体验开发时往往没有公网域名或者公网IP,本工具提供了一个公网代理服务,目的是方便开发测试。
可以使用钉钉提供的内网穿透工具 钉钉内网穿透介绍
我这边写了个启动脚本
#!/usr/bin/env bash
# 自行修改 subdomain 和端口号
echo "FORWARDING http://bruce.vaiwan.com/dd to http:127.0.0.1:9001/dd"
echo "FORWARDING http://bruce.vaiwan.com/zzd to http:127.0.0.1:9001/zzd"
./pierced/windows_64/ding.exe -config=./pierced/windows_64/ding.cfg -subdomain=bruce 9001
修改完毕后,记得修改前端静态页面的请求路径(全局搜索 bruce.vaiwan.com)
4 启动内网穿透工具
sh ding.sh
5 配置钉钉,浙政钉,专有钉钉 h5 微应用路径
钉钉可以通过 $CORPID$ 动态获取容器内的企业 id,但是浙政钉不行,此 id 在获取鉴权码时需要传入
钉钉: http://***.vaiwan.com/dd/?corpid=$CORPID$
浙政钉: http://***.vaiwan.com/zzd/
6 启动 SpringBoot 项目
1)钉钉内部免登
2)钉钉扫码登录
https://oapi.dingtalk.com/connect/qrconnect?appid=APPID&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=回调地址
3)专有钉钉内部免登
鉴于专有钉钉不支持应用内截图,在此不做演示了
4)专有扫码登录
https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=应用标识&redirect_uri=回调地址&scope=get_user_info&authType=QRCODE
这边需要注意的是,专有钉钉扫码和内部免登其实是两个应用,需要区分一下 ak,as
部署
这边采用 idea 的 docker 插件实现服务的一键部署,具体方式可以移步上一篇文章
idea springboot 一键部署(Dockerfile 篇)
后记
前段时间看到一句话,深以为然,在此也分享给大家
总结比埋头重要
去年疫情以来,加之 数字化改革 ,接到浙政钉的项目也越来越多,第一次还是一头雾水,随着踩得坑越来越多,也渐渐踩出了经验。自己开发倒还好,要是和别人分享,还是有很多问题。
因此这段时间静下心来,总结一些遇到的问题,最后整理出一个 demo,不能说保证看完这个 demo,就能流畅的完成开发,但是至少能保证有个能下手的地方。
当然作为职场小白一枚,其实还有很多不足的,需要改进的地方也很多,在此列举一下,有机会的话后期能继续改进
1 浙政钉,钉钉服务端 api 的调用,后期可能会封装成一个单独的 sdk。
2 获取 token 的频率太过频繁,资源浪费,可以考虑利用返回的有效期,对 token 做一个本地缓存
3 由于我是一枚JAVA 后端开发,第一次写前端页面,无论是界面还是代码结构上都是非常欠缺的。最近也打算学习一下前端的一些技术框架,像 vue,uni-app ,ant-design 等,希望能改进一下界面吧。
最后贴几个开发过程中的参考资料吧