开发者社区> 问答> 正文

钉钉获取免登码失败可能原因是什么,如何排查问题?

钉钉获取免登码失败可能原因是什么,如何排查问题?

展开
收起
夹心789 2024-05-21 22:05:21 60 0
1 条回答
写回答
取消 提交回答
  • 建议您按照以下方式排查: 1、服务端请求get_jsapi_ticket,将请求到的ticket和过期时间存入DB。不要每次调用都请求jsticket。否则会出现不同页面之前互相抢占覆盖jsticket的问题,导致dd.config失败; 2、web端请求服务端,服务端计算签名,计算签名用到get_jsticket。服务端从本地取出get_jsticket的时候判断一下是否要过期了,可以提前5分钟或者10分钟。如果没过期,就直接使用,如果快过期了,那么加锁更新。[重要的话说三遍“注意加锁更新”]; 3、服务端计算签名传递给前端; 4、前端jsapi调用dd.config给钉钉。注意,JSAPI是分级别的,如果你使用的jsapi是不需要鉴权(鉴权通过dd.config来实施)的,那么是没有必要调用dd.config的; 5、注意,jsticket是通过accesstoken获取的,也就表示jsticket是一个企业维度的值。一个企业公用一个jsticket,而不是企业下的员工使用一个jsticket。 如果频繁调用get_jsticket,钉钉开放平台会有流控限制; 6、有的ISV这样理解,我做一个定时任务定时刷新jsticket不是也行吗?我们不推荐这样做。因为一个套件可能有10w家企业授权。那么这个定时任务会刷新这10w家企业的jsticket,代价太大,容易触发流控,而且这10w家企业也并不是当天都活跃的企业。所以建议按照步骤2,根据企业员工的请求,被动刷新jsticket; 7、js鉴权要求的参数中URL不要写死,也不要一个dd.config的js文件在所有的页面中都引用这段js。因为并不是所有的页面都需要使用dd.config来jsapi鉴权,哪些页面需要鉴权,就在哪些页面上做dd.config鉴权。否则在页面加载的时候会调用很多无用的dd.config,不但效率低,而且易出错; 8、jsapi鉴权使用dd.config的时候,传入的参数一定要和你服务端做签名的参数相同。不要服务端使用一个随机串和时间戳,但是前端通过h5传给dd.config的是另外的值; 9、在dd.config失败的时候,钉钉会在onerror的信息中返回签名的错误信息。一定要仔细比对错误信息,查看哪一个信息是不对的。如何比对错误信息:要求isv准备一个收集前端错误的url,当页面错误的时候把onerror的信息回传给isv的服务器,做好日志备份。同时每次签名的时候,打印出签名时使用的参数; 10、isv要准备一个收集前端错误的url,不建议直接在页面上弹出alert,这样对用户的干扰很大。而且当发生原因7描述的问题的时候,会直接干扰很多不需要dd.config的页面。 ,此回答整理自钉群“钉钉开发者社区(互助群)”

    2024-05-22 17:23:31
    赞同 展开评论 打赏
问答标签:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
钉钉小程序——为工作方式插上翅膀 立即下载
钉钉客户端自动化的应用 立即下载
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载