|  RSS订阅  |  加入收藏

钉钉微应用开发免登流程

钉钉开发企业内部微应用需要通过免登流程拉取钉钉授权,才能调用钉钉的后端接口。
摘要

公司将办公协同基本上都搬到钉钉线上来了,偶有部门个性的功能,钉钉没有合适的应用可以解决,所以只能自己开发系统解决。钉钉企业内部应用分E应用和微应用,E应用说白了就是小程序,微应用是H5页面。如果公司内部系统全接口开发的,并且微信小程序有开发经验,E应用首选。内部系统是传统模式那就微应用吧。我们公司没有成体系的OA系统,所以就针对部分特殊需求单开吧,微应用更快。


一、申请企业内部应用。

先进钉钉开放平台https://open.dingtalk.com,进入应用开发栏目,微应用管理,创建企业内部应用,设置应用名称,logo、简介、应用首页,pc首页,后台地址,服务器信息等。企业内部应用是不需要钉钉审核的。如果是开发商,需要创建第三方应用,这个是需要钉钉审核的。内部应用创建完成后就会得到AgentId、AppKey和AppSecret。进入应用权限管理中社情对应的权限,默认开通的基础权限,如果需要审批、代办等权限需要在下面权限列表里面单独申请,不过还在不需要钉钉审核,即开即用。

二、钉钉免登流程。

钉钉的文档着实没体系,东一个链接西一个链接的。总结下来免登流程分四步:1、前端获取钉钉免登授权码code;2、后端获取access_token;3、使用授权码code和access_token换取用户userid;4、通过access_token和userid换去用户详情userinfo。

三、实现免登实现。

1、获取授权码code。

首先页面引入JSAPI。

carbon.jpg

其次调用JSAPI组件。

carbon1.jpg

2、后台获取access_token

access_token很简单,只要把AppKey和AppSecret传到接口地址上去,就能拿到。鉴于钉钉后端都是接口请求的,建议把curl提取出来做个函数,接口域名、路径、请求方式、传参全部参数化,调用统一的curl就好了。


3、换取userId。

首先把前台调用JSAPI组件的结果传到后台,我用AJAX干的。JSAPI组件初始化反馈的结果已经是一个标准的json格式,不用转换直接传后台就好。


再调用钉钉的获取userId接口获取userId,方法和获取access_token的方法一致,参数就是code和access_token。


4、换取userInfo。

调用钉钉获取userInfo接口获取userInfo,方法和前面一致,参数是access_token和userId。


四、注意事项。

授权码code是每次请求都不一样,单次请求的数据5分钟有效,所以没必要缓存,直接用一次调一次。access_token有效期7200秒,自动续期。缓不缓存根据需要自便吧


如文章有用,给个赞助吧
  钉钉开发    
转载请注明出处,未经许可禁止商用!
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!

流云
@西枫里人:谢谢回复!明白了,“免登”只是用户无需输入用户名和密码便可进入应用,同时自动获取到前用户信息,自己的api接口访问,还是需要做做自己的鉴权认证。

西枫里人
@流云:你得明白两个概念,钉钉的免登是指你通过钉钉打开你的E应用也好,微应用也好,可以使用钉钉的access_token进行。而你api接口的权限验证,原本就是需要你自己的程序做鉴权操作的,这原本就互不影响啊

流云
请问从钉钉窗口进入E应用,进行免登操作,获取用户信息,如果用户继续进行其它操作,调用自己后台的restful api接口,应如何做请求安全验证?