钉钉开发之专有钉钉

标签: 无 分类: 未分类 创建时间:2023-09-23 01:34:27 更新时间:2023-10-20 11:23:28

1.前言

根据开发文档和相关咨询,钉钉>专有钉钉>浙政钉。浙政钉的申请需要通过业主单位进行,这个要是想接入浙政钉的时候,可以询问业主单位,让业主单位进行申请。专有钉钉的申请,可以企业自行注册。

(1)注册
打开ISV注册,填写 手机号、企业全称、企业统一社会信用代码,即可以注册。如果已经注册过,或者说是忘记自己注册了,那需要到浙政钉开发群里面,去找群主解决这个问题,他会给你处理的。我遇到的问题就是,账号冻结了,需要进行解冻,然后就是需要修改了短信接收手机号,账号用户名是无法修改的。

(2)解冻
申请解冻

(3)登陆
注册之后就可以进行登陆了,打开 登陆 页面就可以,输入用户名密码就可以登陆了。

2.扫码登录

要想接入浙政钉,需要先测试专有钉钉的扫码登录。
(1)创建扫码登录应用,获取应用的 appkey/appSecret

(2)点击应用配置,配置回调地址
这里我有点疑问的就是,这个应用的标志,是自己随便填呢,还是要填已经有的应用,比如填写 H5&小程序 里面创建的应用。经过我的尝试,我发现这个扫码应用的标志可以自己随便填,可以和 H5 应用标志的前面的一样,反正都是会在后面添加随机数的。

(3)构造请求页面和地址,有两种方式,一种是独立页面的方式,一种是使用iframe的方式。
使用iframe的方式,需要构造请求地址

1
<iframe src="https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=应用标识&redirect_uri=回调地址&scope=get_user_info&authType=QRCODE&embedMode=true" class="zwdd-qrcode" frameborder="no"></iframe>

然后监听页面回调。

1
2
3
4
5
6
7
<script type="application/javascript">
window.addEventListener('message', function(event) {
// 这里的event.data 就是登录成功的信息
// 数据格式:{ "code": "aaaa", "state": "bbbb" }
alert(JSON.stringify(event.data));
});
</script>

(4)获取临时 code
通过iframe方式嵌入的话,专有钉钉用户扫码登录并确认后,会触发 message回调,里面携带了 code 信息。拿到 code 之后,通过自己的后台服务,换取用户信息。通过直接页面跳转的方式,专有钉钉用户扫码登录并确认后,会302到你指定的redirect_uri,并向url参数中追加临时授权码code(此code非authcode)及state两个参数。

(5)获取access_token
通过 /gettoken.json 接口,根据 appkey,和appscret获取调用的凭证。这里有一点需要说明的就是,appkey 和 appscret 扫码登录有专门的,和h5应用不是同一个,通常都会带 _dingoa 后缀。

(6)获取用户信息
通过服务端的 /rpc/oauth2/getuserinfo_bycode.json ,传入获取到的临时授权码,可以获取用户信息,这里没有手机号。我发现我找了很多的地方,还是没有找到直接获取用户手机号的方法。根据群里的消息说明:“经过大数据局评估,处于安全考虑,目前暂时无法提供获取人员信息返回手机号的功能。”

参考文章:
1.扫码登录流程 构造登录页面,实现用户登录。
2.获取用户详情 通过免登授权吗,获取用户信息,进行下一步的操作。
3.服务端通过临时授权码获取授权用户的个人信息
4.浙政钉扫一扫获取用户信息 这里就是使用了专有钉钉进行了扫码登录集成,给了一个测试用例,有前端和后端代码。

3.接口调试

比如我测试 /mozi/employee/getEmployeeByCode 接口,根据员工 Code 查询详情,打开Api控制台,进行调试。

这里有一点要说明的就是,这个 accessKey 和 secretKey ,就是应用的 App Key 和 App Secret。

参考文章:
1.java浙政钉(专有钉钉)免登录对接 1.注册专有钉钉ISV并且创建应用。2.根据下方链接,建立基础数据并创建应用,创建应用这步比较坑,不能直接用超管创建应用。得添加一个开发者角色的账号去创建应用,不然应用开发里可能看不到应用。 千万记得选择应用使用范围。 工作台发布后,如果没配置这个,还是看不到应用的。还包括了一些常见的问题:各种NoClassDefFoundException;User not authorized to operate on the specified resource. 检查应用的服务端权限是否正常。还有前台服务,和后台接口。

4.工作台

专有钉钉的工作台,通过超级管理员,也就是通过 isv 企业注册的账号,就可以进入进行用户管理,增加和删除用户,其他人就可以使用添加的用户进行认证了。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。