企业应用接入的开发-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

企业应用接入的开发

kangknag 2016-10-13 09:58:58 3766

钉钉开发文档
开发者文档中心:https://open-doc.dingtalk.com/?spm=a3140.7785475.0.0.vew07S

一、快速接入的选择:

1. 企业微应用:钉钉企业微应用是企业在钉钉上建立的微应用,只提供给自己企业内部使用。它帮助企业建立员工考勤、审批、员工通讯录管理以及与企业 IT 系统间的连接。使用企业微应用可以帮助企业快速、低成本的实现高质量的移动办公服务,实现员工沟通、员工协作、产品运营的移动化。我们有信心,帮助每一位企业微应用开发者,提升开发效率,降低开发成本与难度,确保企业微应用的稳定运行。

2.ISV 微应用: ISV 是 Independent Software Vendors 的英文缩写,意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业。
钉钉ISV 是独立于企业、钉钉之外的第三方软件开发商,愿意和钉钉一起共建各个行业的移动办公服务, ISV 开发的微应用通过审核后会在钉钉应用中心展示,企业管理员可以在钉钉应用中心添加 ISV 微应用到自己企业的工作面板供企业所有员工使用。 ISV 开发者体系比企业应用开发者体系复杂一些, ISV 必须获得企业的授权才能获取企业用户的通讯录等信息并为企业的用户提供服务。

因为我们开发的是企业内部应用,给自己员工使用的,属于企业微应用。根据描述,选择企业接入。

二、企业接入:
企业接入文档地址:
https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.839sc4&treeId=174&articleId=104937&docType=1
按照步骤,先注册企业账号,再创建微应用,这样我们才能拿到开发时需要的参数

三、开发微应用:
由于我们做的是手机和后台的开发,所以我们只需要关注 客户端开发文档 和 服务端开发文档 就好了。

服务端开发文档地址:
https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.7SVwPP&treeId=172&articleId=104981&docType=1
我们需要先看一下服务端的开发文档,在服务端中,我们可以找到java 版本的 demo 地址。
java 版本的 github 地址 https://github.com/ddtalk/HarleyCorp
这个工程是用IntelliJ IDEA 做的开发,而我用的是 eclipse 做的开发,我们可以在 eclipse 中创建 web 工程,把相应的文件都放进去。这个 demo 有一个地方显示错误, UserHelper.java 中有一个小错误,根据提示进行修改就好了。(在这里你可以下载一个 eclipse 反编译插件,可以详细了解一下钉钉的 jar 的源码)。

然后我们根据这个Demo 的文档,把相应的参数都补全。这样,我们可以自己写一个 main 方法,把 demo.java 里边的需要代码复制过来就可以了,比如发消息,然后运行一下,手机就会接收到钉钉的提示消息。

在这个demo.java 文件中已经写好了服务端开发文档的一些接口以及例子,我们根据接口定义的参数,直接写入测试就好行了。

四、 免登。
免登接口是关于用户无需输入用户名+密码就可以实现登录,通过权限认证后获取用户身份的接口
免登的相关地址
https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.v7vRht&treeId=172&articleId=104969&docType=1
因为我们是给手机端做的免登所以选择使用JS-API 开发企业应用免登 ( 移动端 ) 。

在java 版本的 demo 中有相关免登的接口。
1. 首先 index.jsp 中通过 AuthHelper.java 文件中的 getConfig 方法把相关参数传给前台 _config 。在 demo.js 中对调用 dd.config() 处理 _config 参数。
2. 在 index.js 的 dd.ready(function(){}) 中调用 dd.runtime.permission.requestAuthCode() 传入 corpId 获取 code ,之后我们通过回调函数处理我们拿到免登需要的 code 然后将 code 和 corpid 传给后台 UserInfoServlet
3. 在 UserInfoServlet.java 中,我们调用 UserHelper.getUser 方法就能够获取 user 的相关信息,然后根据这个 user 的相关属性去做自己的权限控制就可以了。

五、 遇到过的问题。
我把demo 中的 servlet 改成了相关的 controller ,在做免登时用 java 版本的 Demo 移动端一直报 message:" 权限校验失败 " 、 errorcode:3 、错误码 :52013 等相关的错误,这个问题当时困扰我的时间比较长。

1. 后来查到的原因是在 index.jsp 中通过 AuthHelper.java 文件中的调用 getConfig 方法, urlString 获取的值是 http://xxxx/xxxx.jsp ,而我们在创建微应用时写的地址是 http://xxxx/xxxx 。这就造成了 urlString 以及根据这个 urlString 生成的相关参数与钉钉后台的验证不一致的结果,移动端就报了相关错误。
我后台把这个生成参数request.getRequestURL().toString(); 改成了静态的 http://xxxx/xxxx 。

2. 还有一个就是jsapi_ticket 过期问题,也造成了以上的错误,我当时为了调试方便,就把 AuthHelper.java 中的 cacheTime 设置为了 0( 调试完成后再改回去 ) 。

通过以上两步解决了我在做免登时遇到的问题。

我们也可以根据以下三个网址里边的内容去定位自己遇到的问题
服务端调试工具:https://debug.dingtalk.com/?spm=a219a.7629140.0.0.3usWsy
客户端调试工具:https://wsdebug.dingtalk.com/?spm=a219a.7629140.0.0.vzBaXq
常见问题:https://bbs.aliyun.com/read/266079.html?spm=5176.bbsl276.0.0.BlZHbS

Java Android开发 数据安全/隐私保护 开发者
分享到
取消 提交回答
全部回答(1)
  • rodgun
    2016-10-19 11:20:54
    Re企业应用接入的开发
    我们提供了一个服务,专门是集成从钉钉到企业各种应用的,而且实现了免登效果,有需要可以联系我
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题