服务端请求get_jsapi_ticket,将请求到的ticket和过期时间存入DB。不要每次调用都请求jsticket。否则会出现不同页面之前互相抢占覆盖jsticket的问题,导致dd.config失败! web端请求服务端,服务端计算签名,计算签名用到get_jsticket。服务端从本地取出get_jsticket的时候判断一下是否要过期了,可以提前5分钟或者10分钟。如果没过期,就直接使用,如果快过期了,那么加锁更新。[重要的话说三遍“注意加锁更新”]。 服务端计算签名传递给前端。 前端jsapi调用dd.config给钉钉。注意,JSAPI是分级别的,如果你使用的jsapi是不需要鉴权(鉴权通过dd.config来实施)的,那么是没有必要调用dd.config的。 注意,jsticket是通过accesstoken获取的,也就表示jsticket是一个企业维度的值。一个企业公用一个jsticket,而不是企业下的员工使用一个jsticket。 如果频繁调用get_jsticket,钉钉开放平台会有流控限制。 有的ISV这样理解,我做一个定时任务定时刷新jsticket不是也行吗?我们不推荐这样做。因为一个套件可能有10w家企业授权。那么这个定时任务会刷新这10w家企业的jsticket,代价太大,容易触发流控,而且这10w家企业也并不是当天都活跃的企业。所以建议按照步骤2,根据企业员工的请求,被动刷新jsticket。 js鉴权要求的参数中URL不要写死,也不要一个dd.config的js文件在所有的页面中都引用这段js。因为并不是所有的页面都需要使用dd.config来jsapi鉴权,哪些页面需要鉴权,就在哪些页面上做dd.config鉴权。否则在页面加载的时候会调用很多无用的dd.config,不但效率低,而且易出错。 jsapi鉴权使用dd.config的时候,传入的参数一定要和你服务端做签名的参数相同。不要服务端使用一个随机串和时间戳,但是前端通过h5传给dd.config的是另外的值。 在dd.config失败的时候,钉钉会在onerror的信息中返回签名的错误信息。一定要仔细比对错误信息,查看哪一个信息是不对的。如何比对错误信息:要求isv准备一个收集前端错误的url,当页面错误的时候把onerror的信息回传给isv的服务器,做好日志备份。同时每次签名的时候,打印出签名时使用的参数。 isv要准备一个收集前端错误的url,不建议直接在页面上弹出alert,这样对用户的干扰很大。而且当发生原因7描述的问题的时候,会直接干扰很多不需要dd.config的页面。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。