钉钉机器人项目踩过的坑

1.移动端安卓系统打开链接正常,苹果系统打开链接调用接口失败

说明:需要获得点击该链接的用户信息,因此需要使用钉钉跳转协议在钉钉当前页面打开,通过免登码的方式来获取用户信息,直接使用http协议跳转浏览器的方式无法拿到免登码,因此需要对http://standard-action-robot-dt-daily.ingress.dayu.work/call?method=POST&api=/robot/stopIteration&params={ “projectId”:“69”,“iterationId”:“128”,“conversationId”:“cidhipuXrhPi1Ud8CHlt05V4Q==”,“actionItemIds”:"",“flag”:“Y”}
进行包装 -->

免登”是指用户进入应用后,无需输入钉钉用户名和密码,应用程序可自动获取当前用户身份,进而登录系统的流程。

地址一:dingtalk://dingtalkclient/page/link?dd_mode=push&pc_slide=true&url=http://standard-action-robot-dt-daily.ingress.dayu.work/call?method=POST&api=/robot/stopIteration&params={ “projectId”:“69”,“iterationId”:“128”,“conversationId”:“cidhipuXrhPi1Ud8CHlt05V4Q==”,“actionItemIds”:"",“flag”:“Y”}

这里对dingtalk://dingtalkclient/page/link?dd_mode=push&pc_slide=true&url=做一下参数说明:
跳转到H5页面
link(侧边栏/容器划出)

参数 说明
url 页面URL,必须做urlencode。(对url进行转义)
dd_mode iOS端使用。
push:iOS从左向右推入一个容器
present:iOS从下向上弹出一个容器
pc_slide pc_slide=true 时,PC 端会在应用内打开这个 URL。

钉钉发送的消息链接地址如果直接发送_地址一,是无法正常工作的.当你使用了钉钉统一跳转协议,http://standard-action-robot-dt-daily.ingress.dayu.work/call?method=POST&api=/robot/stopIteration&params={ “projectId”:“69”,“iterationId”:“128”,“conversationId”:“cidhipuXrhPi1Ud8CHlt05V4Q==”,“actionItemIds”:"",“flag”:“Y”}这一部分将作为“钉钉统一跳转协议”地址的入参,所以需要经过urlEncode
于是我们对http地址进行转义后得到:
http%3A%2F%2Fstandard-action-robot-dt-daily.ingress.dayu.work%2Fcall%3Fmethod%3DPOST%26api%3D%2Frobot%2FstopIteration%26params%3D%7B%22projectId%22%3A%2269%22%2C%22iterationId%22%3A%22128%22%2C%22conversationId%22%3A%22cidhipuXrhPi1Ud8CHlt05V4Q%3D%3D%22%2C%22actionItemIds%22%3A%22%22%2C%22flag%22%3A%22Y%22%7D
这个时候完整的地址链接是:dingtalk://dingtalkclient/page/link?dd_mode=push&pc_slide=true&url=http%3A%2F%2Fstandard-action-robot-dt-daily.ingress.dayu.work%2Fcall%3Fmethod%3DPOST%26api%3D%2Frobot%2FstopIteration%26params%3D%7B%22projectId%22%3A%2269%22%2C%22iterationId%22%3A%22128%22%2C%22conversationId%22%3A%22cidhipuXrhPi1Ud8CHlt05V4Q%3D%3D%22%2C%22actionItemIds%22%3A%22%22%2C%22flag%22%3A%22Y%22%7D(
地址二)
这个时候我们惊奇地发现PC端点击链接一切正常,移动端安卓系统也正常,但是移动端苹果系统报错了,排查发现,params={ “projectId”:“69”,“iterationId”:“128”,“conversationId”:“cidhipuXrhPi1Ud8CHlt05V4Q==”,“actionItemIds”:"",“flag”:“Y”}
的参数是空的,也就是说params的参数丢失了,后端接口肯定就报错了.


解决方案:由于不同系统自带的浏览器内核不同,因此需要先对{ “projectId”:“69”,“iterationId”:“128”,“conversationId”:“cidhipuXrhPi1Ud8CHlt05V4Q==”,“actionItemIds”:"",“flag”:“Y”}进行转义,然后再对整个http链接进行转义.
最终地址为_:dingtalk://dingtalkclient/page/link?dd_mode=push&pc_slide=true&url=http%3A%2F%2Fstandard-action-robot-dt-daily.ingress.dayu.work%2Fcall%3Fmethod%3DPOST%26api%3D%2Frobot%2FstopIteration%26params%3D%257B%2522projectId%2522%253A%252269%2522%252C%2522iterationId%2522%253A%2522128%2522%252C%2522conversationId%2522%253A%2522cidhipuXrhPi1Ud8CHlt05V4Q%253D%253D%2522%252C%2522actionItemIds%2522%253A%2522%2522%252C%2522flag%2522%253A%2522Y%2522%257D

2.JSAPI鉴权失败相关问题

对于一些钉钉业务、安全相关的JSAPI的调用,需要先鉴权&#

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值