【浙政钉】第一篇:企业内应用免登

专有钉钉为浙政钉的测试平台,接下来为大家介绍如何对接浙政钉。

版权:本文提供大家参考学习,如需转载,请附上本文链接。 

目录

介绍

一 、专有钉钉

二、准备工作

开发阶段

一、开发环境

二、参数配置

三、代码开发

1、获取token

2、获取临时授权码

三、获取用户信息


介绍

一 、专有钉钉

专有钉钉是什么?专有钉钉是个开放的saas平台,用于对接浙政钉的测试平台,接口等和浙政钉正式环境一样。

二、准备工作

对接浙政钉之前,需要申请专有钉钉的ISV账号,这个账号是以单位为主进行创建。

传送门:专有钉钉门户 (dg-work.cn)

创建好账号后,可以创建一个项目,如图:

钉钉专有版开放平台开发者后台 (dg-work.cn)

 然后就是对创建的项目进行配置,如图:

好了,到此就正式介绍完毕了。

开发阶段

一、开发环境

 开发工具:idea   开发语言:Java   使用框架:SpringBoot

依赖:

        org.projectlombok lomboktrueorg.apache.httpcomponentshttpclient4.5.6com.oracelzwdd-sdk-java1.2.0com.aliyundingtalk1.3.23org.assertjassertj-coreorg.apache.commonscommons-lang3joda-timejoda-time2.10com.alibabafastjson1.2.54

注意:依赖这个依赖是我自己生成在maven中的,你们可以根据自己maven仓库生成到具体文件夹

com.oracelzwdd-sdk-java1.2.0

sdk(jar包)下载:专有钉钉门户 (dg-work.cn)

 jar生成maven依赖命令,我这边以为上面说的依赖来


mvn install:install-file -Dfile=D:\jar\zwdd-sdk-java-1.2.0.jar -DgroupId=com.oracel -DartifactId=zwdd-sdk-java
-Dversion=1.2.0 -Dpackaging=jar

路径:D:\jar\zwdd-sdk-java-1.2.0.jar 我是下载jar包的路径,可以根据自己的来。

二、参数配置

先在yml文件中做好配置:

#专有钉钉参数
zzdingTalk :appKey : xxxxxxxxxxxxxxxappSecret : xxxxxxxxxxxxxxxxxdomainName : openplatform.dg-work.cnprotocal : httpstenantId : 1111111

参数说明:

appKey 、appSecret : 为创建应用的秘钥

 domainName:调用服务的域名

服务端域名
浙政钉
openplatform-pro.ding.zj.gov.cn
专有钉钉  openplatform.dg-work.cn

tenantId :为租户id,简单点说就是你登陆的账号id

如何知道你的tenantId呢?你可以在钉钉专有版开放平台开发者后台 (dg-work.cn)这个页面右击查看源代码,如图找到tenantId。

三、代码开发

1、获取token

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.xxpt.gateway.shared.api.request.OapiMoziOrganizationListOrganizationsByCodesRequest;
import com.alibaba.xxpt.gateway.shared.api.response.OapiMoziOrganizationListOrganizationsByCodesResponse;
import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
import com.alibaba.xxpt.gateway.shared.client.http.GetClient;
import com.alibaba.xxpt.gateway.shared.client.http.IntelligentPostClient;
import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;/**** 浙政钉通讯*/
@Service
@Slf4j
public class DingTalkService {@Value("${zzdingTalk.domainName}")private String domainName;@Value("${zzdingTalk.appKey}")private String appKey;@Value("${zzdingTalk.appSecret}")private String appSecret;@Value("${zzdingTalk.protocal}")private String protocal;@Value("${zzdingTalk.tenantId}")private String tenantId;@Autowiredprivate RedisTemplate redisTemplate;/**** 获取浙政钉token* @return*/public String getToken() {if (redisTemplate.hasKey("dingTalkToken")) {return redisTemplate.opsForValue().get("dingTalkToken").toString();}ExecutableClient executableClient = ExecutableClient.getInstance();executableClient.setDomainName(domainName);executableClient.setProtocal(protocal);executableClient.setAccessKey(appKey);executableClient.setSecretKey(appSecret);executableClient.init();//executableClient要单例,并且使用前要初始化,只需要初始化一次String api = "/gettoken.json";GetClient getClient = executableClient.newGetClient(api);//调用APIString apiResult = getClient.get();log.info("获取浙政钉token:{}", apiResult);JSONObject jsonObject = JSONObject.parseObject(apiResult);String token = "";Integer expiresIn = 0;if (jsonObject.getBoolean("success")) {token = jsonObject.getJSONObject("content").getJSONObject("data").getString("accessToken");expiresIn = jsonObject.getJSONObject("content").getJSONObject("data").getInteger("expiresIn");redisTemplate.opsForValue().set("dingTalkToken", token, expiresIn, TimeUnit.SECONDS);}return token;}
}

返回参数:

log.info("获取浙政钉token:{}", apiResult);返回如下:

{"success":true,"content":{"data":{"accessToken":"c139fe44362f41b6b84862ec82ab84d9","expiresIn":"7200"},"requestId":"df04428415724925400701038d663a","responseMessage":"OK","responseCode":"0","success": true}
}

我的代码中已经解析了json,所以最后只返回token字符串了。

2、获取临时授权码

这个就涉及到前端了,前端可以调用如下代码,新建个页面,然后在专有钉钉内打开你页面的地址。(其他容器打开获取不到),点击 专有钉钉门户 (dg-work.cn)进行查看api。

小程序获取免登授权码
使用说明
npm install gdt-jsapi
推荐使用 npm 包形式按需引入,小程序可以通过以下方式进行引入import dd from 'gdt-jsapi';dd.getAuthCode({}).then(res =>{console.log(res)
}).
catch(err =>{})

3、获取用户信息

/**** 获取用户信息* @param code 临时授权码* @return*/public JSONObject getDingTalk(String code) {String accessToken = getToken();ExecutableClient executableClient = ExecutableClient.getInstance();executableClient.setDomainName(domainName);executableClient.setProtocal(protocal);executableClient.setAccessKey(appKey);executableClient.setSecretKey(appSecret);executableClient.init();String api = "/rpc/oauth2/dingtalk_app_user.json";PostClient postClient = executableClient.newPostClient(api);postClient.addParameter("access_token", accessToken);postClient.addParameter("auth_code", code);String apiResult = postClient.post();log.info("获取浙政钉获取用户信息:{}", apiResult);return JSONObject.parseObject(apiResult);}

返回参数:

{"success":true,"content":{"data":{"accountId":93,"lastName":"洪阳","clientId":"mozi-developer-center","realmId":57,"openid":"6f1a885a4020f3624b71570b74925d7b","realmName":"绣花针测试租户","namespace":"local","nickNameCn":"洪阳","tenantUserId":"57$93","account":"pishi.hy","employeeCode":"pishi.hy"},"responseMessage":"成功","responseCode":"0","success":true}
}

到此处,已经获取到用户信息了,接下来就是对用户的入库,生成对应的token给前端,然后就是一些业务了。

按照如上操作,就已经实现了企业内免登操作了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

收藏

相关文章

Duilib中list控件支持ctrl和shif多行选中的实现

[ICML2015]Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shif

win10系统 微软输入法 于eclipse ctrl+shif+f冲突间接处理办法

Codeforces Round #259 (Div. 2) B. Little Pony and Sort by Shif

读LDD3,内存映射与DMA--PAGE_SHIF…

VMware虚拟机安装XP【要先分区,再设置BOOT 启动CD,shif+上移】

更换iBus五笔的左与右Shif

sublime ctrl+shif+f 没用解决办法

idea 对 ctrl + z 的撤销 是 ctrl + shif + z

计算机最早的设计师应用于,计算机应用基础选择题doc.doc

win10自带截图神器:Win+Shift+S

Python基础之文件目录操作

python简述目录_Python基础之文件目录操作(示例代码)

tp5 如何做数据采集

任务2-7(服务器字体+阿里巴巴矢量库)

html标签(1):h1~h6,p,br,pre,hr

TI 电量计介绍与芯片选型指南

几款TI电源芯片简介

TI DSP芯片C2000系列读取FLASH数据

德州仪器(Ti)平台嵌入式开发基础

TI三相电机智能栅极驱动芯片特点分类

省选模拟(12.08) T3 圈圈圈圈圈圈圈圈

Hadoop生态圈技术栈(上)

大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之6.Impala交互式查询

小猿圈之Linux下Mysql 操作命令

大数据Hadoop生态圈常用面试题

大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之4.Hive DDL、DQL和数据操作

备战Noip2018模拟赛11(B组)T3 Monogatari 物语

【智能优化算法-圆圈搜索算法】基于圆圈搜索算法Circle Search Algorithm求解单目标优化问题附matlab代码

NYOJ 78 圈水池

递归问题 跑道 汽车 绕圈问题 Python实现

Hadoop生态圈(三):MapReduce

内容推荐

最新更新

  • [用户研究] 如何做好专家访谈?
  • [产品经理] 跨境电商独立站的品牌营销策略规划,该怎么做?
  • [产品经理] AI Agent应用迎来大爆发,成为智能时代的自动化先锋
  • [产品经理] 电商测图测款:数据不行的链接咋办
  • [业界综合] 滴滴又开始搞旅游了
  • [市场运营] 做To G产品得要会“玩”概念
  • [创业学院] “涨租效应”,是如何将创业个体的利润吃干净的?
  • [产品经理] 美团换了个姿势,弃疗低价依赖症

热门标签

支付网关后台 内容变现 空间 用户共创 大品格局 算法逻辑 订单拆单 resources jstl 自如APP 元宇宙游戏 交互文案 NLP知识 欢乐斗地主 互联网模式 小米汽车 商业中台 理财师 规则设计 课程拼团 深度工作 搞钱 财务数据 滴答清单 标签体系设计 visual ToB提案 增长思维能力 设计文档 天数
立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部

聚圣源昵称起名网5月5日卖弄三十而已免费观看真实的免费起名火旁宝宝起名宝宝起明星名字有哪些胡辣汤加盟南京是哪个省意大利冰激凌加盟茫然若失的意思小王子读后感属蛇人起名起个占卜名魔兽争霸冰封王座地图下载cjol女宝贝起什么名字好塑料制品厂起名大全马赛克画嚣张殿下独宠我秦姓怎么起名字哈尔滨平房区发现2例阳性感染者读后感怎么写瑞字起名男孩名侠盗飞车圣安地列斯下载琉璃演员表美国一架飞机坠毁贾姓起名字男孩美发美容怎么起名zero动漫下载淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化