配置禅道

在第三方应用中集成禅道 分享链接 /book/zentaopms/integration-287.html?releaseID=17

作者:刚哥 最后编辑:刘振华 于 2024-11-08 16:00:38 浏览量:87707
摘要:禅道内置在第三方应用中集成禅道的功能,可以将禅道的数据和第三方应用打通。本文介绍如何配置在第三方应用中集成禅道的功能。

禅道从9.6版本开始内置了在第三方应用中集成禅道的功能,可以方便的将禅道的数据和第三方应用打通。第三方应用必须以 GET 方式访问禅道,禅道以 JSON 格式返回数据。下面我们介绍如何配置该功能。

一、配置

用超级管理员用户登录禅道,进入 后台--二次开发--应用,点击【添加应用】按钮新增一个应用,如图:

18系列及以上版本在 后台--二次开发--接入禅道 页面中操作

注意:

1、应用名称、应用代号、密钥是必填项,代号只能为字母或数字的组合,密钥由系统自动生成。

2、IP描述为选填项。此处的 IP 是一个白名单,默认没有限制所有 IP 都可以访问。

3、和别的系统相互调用数据,免密登录必须是关闭状态。

二、签名机制

第三方应用在请求禅道数据的时候需要做签名验证,API 的请求格式为 /api.php?m=moduleName&f=methodName&params=params&code=code&time=timestamp&token=token。

m=moduleName&f=methodName&params=params 部分为数据请求参数,根据实际的需求进行设置。

code为应用代号,需要和禅道应用设置中保持一致。

time位时间戳,可以通过PHP的time函数得到。

token为数字签名,其算法为:code、密钥、time字符串合并,再进行 md5。

以上图设置的应用为例,应用代号为 myApp,密钥为 427c579384224abf9570779d82969d1e,请求id为1的项目详情,其 token 计算过程如下:

$code  = 'myApp';
$key   = '427c579384224abf9570779d82969d1e';
$time  = '1557034496';
$token = md5($code . $key . $time);

算得 token = 020ec7c33a7f1a048743849d15fb218a,请求 API 为 /api.php?m=project&f=view&id=1&code=myApp&time=1557034496&token=020ec7c33a7f1a048743849d15fb218a。

注意:时间戳只能用一次,下次请求的时间戳必须大于该时间戳。

三、全局错误码

300001 缺少 code 参数,检查请求 API 中是否包含 code 参数。
300002 缺少 token 参数,检查请求 API  中是否包含 token 参数。
310001 应用不存在, 检查请求的应用在禅道中是否存在,或是否已被删除。
310002 应用未设置密钥,检查请求的应用在禅道中是否设置密钥。
320001 该IP访问被限制访问,检查请求的应用在禅道中的 IP 设置。
330001 不合法的token参数,检查请求 API 中的 token 是否计算正确。

有时会出现请求内跳转的情况,如请求 index 模块的 index 方法时默认会跳转到 my 模块的 index 方法,这时系统通过 session 来验证跳转后的请求是否合法。
340001 缺少session code,检查跳转后 $_SESSION['ENTRY_CODE'] 是否正确。
340002 session验证失败,检查 session 验证逻辑,检查跳转后 $_SERVER['REMOTE_ADDR'] 是否正确。

评论列表
🎉
tomcat 2025-04-15 15:11:50 回复
m=moduleName&f=methodName&params=params 部分为数据请求参数,根据实际的需求进行设置..

上述中的请求参数有哪些?我们的版本是:企业版 4.1.2
回复
这里的参数是您定义方法时接收的参数。
比如
public function setParamsByPathInfo($defaultParams, $value)
{
// ...代码块

其中 $defaultParams ,$value ,就是参数接收的参数 ,在url中拼接的话 为
defaultParams=xxx&value=xxxx
需要注意参数的顺序
🍩
禅道0233 2023-08-02 20:04:00 回复
强烈建议 token的md5生成程序带上account这个噪音,不然token生成后,任意账号都能拿去使用,如果碰到有心人,就是重大数据安全事故
回复
这种接口方式后面应该不会调整了。
新版本支持restfulAPI接口,建议可以使用这种方式呢
https://www.zentao.net/book/api/664.html
🐵
禅道6536 2023-07-20 10:54:24 回复
c#获取的时间戳,接口返回40{"errcode":401,"errmsg":"无效的token参数"}。
code:myapp
key:qr5a8fk0cozk0chiyorvrtoq9spoutud
time:1689821527

回复
您好,可以添加页面上方的qq,通过后,邀请您加入技术交流钱,提供截图协助您解决问题。
测试池 2023-03-13 17:11:18 回复
请问如何开启【超级model调用接口权限】一直找不到版本:18.1开源版
回复
可以在后台-人员-权限-权限维护中 勾选添加【超级model调用接口权限】
回复
添加权限之后,重新登录禅道之后生效
回复
收到,以解决。谢谢老师
Claire 2023-02-13 15:37:06 回复
/api.php?m=search&f=buildQuery 第三方应用创建BUG过滤查询应该如何设置form数据 fieldtitle=&fieldkeywords=&fieldsteps=&fieldassignedTo=&fieldresolvedBy=&fieldstatus=&fieldconfirmed=&fieldstory=&fieldproduct=0&fieldbranch=&fieldplan=&fieldmodule=ZERO&fieldexecution=0&fieldseverity=3&fieldpri=0&fieldtype=&fieldos=&fieldbrowser=&fieldresolution=&fieldactivatedCount=&fieldtoTask=&fieldtoStory=&fieldopenedBy=&fieldclosedBy=&fieldlastEditedBy=&fieldmailto=&fieldopenedBuild=&fieldresolvedBuild=&fieldopenedDate=&fieldassignedDate=&fieldresolvedDate=&fieldclosedDate=&fieldlastEditedDate=&fielddeadline=&fieldactivatedDate=&fieldid=&andOr1=AND&field1=openedDate&operator1=%3E%3D&value1=2023-02-01&andOr2=and&field2=module&operator2=belong&value2=ZERO&andOr3=and&field3=keywords&operator3=include&value3=&groupAndOr=and&andOr4=AND&field4=openedDate&operator4=%3C&value4=2023-02-02&andOr5=and&field5=assignedTo&operator5=%3D&value5=&andOr6=and&field6=resolvedBy&operator6=%3D&value6=&module=executionBug&actionURL=%2Findex.php%3Fm%3Dexecution%26f%3Dbug%26executionID%3D602%26productID%3D0%26branch%3D0%26orderBy%3Dstatus%2Cid_desc%26build%3D0%26type%3Dbysearch%26queryID%3DmyQueryID%26tid%3Dh5td6oyw&groupItems=3&formType=lite
回复
可以直接在浏览器中执行下搜索的动作,F12看下form-data是传的什么
张荥 2023-02-09 12:35:50 回复
单点登录报无效的token是什么原因,如何解决
回复
找到原因了,是time参数名传错了,写成了timestamp
风君子 2022-08-10 11:13:48 回复
请问能支持钉钉扫码登录吗?
回复
目前暂不支持钉钉扫码登录,相关代码开源,您可以修改代码实现,二次开发参考文档:
http://www.zentao.net/book/zentaopmshelp/156.html
http://www.zentao.net/book/zentaopmshelp/225.html
2022-08-04 17:33:03 回复
禅道版本8.8,能使用java调用禅道API向禅道推送bug不
回复
后台-二次开发-api 列表里面看下;
贵公司版本比较老了,建议升级下版本
升级不会影响数据的,升级前请做好数据备份
升级请参考文档:http://www.zentao.net/book/zentaopmshelp/41.html
备份请参考文档:http://www.zentao.net/book/zentaopmshelp/42.html
ran 2022-06-08 17:06:40 回复
{"error":"EMPTY_ENTRY"} 登陆返回这个信息是什么意思
回复
您好,您可以添加我们商务同事宋晓的QQ:2468103332,邀请您加入技术支持交流群协助解决问题呢。
sheep 2022-04-15 11:31:24 回复
java项目接入禅道免密登录,使用的是开源版15.5, 每次相隔5秒去生成免密登录地址(我十分确定以及肯定时间戳每次都不一样,相差了5秒多,远远大于1秒), 要么连续成功,要么连续失败,失败的报错是(405, token已失效)不稳定, 请问下可以怎么定位问题呢?
回复
时间戳只一次有效的
回复
是的啊,所以每次请求时 都是新的时间戳,时间戳间隔都是大于1s
回复
module/common/model.php中的checktEntryToken方法中的时间判定规则可以修改为不小于试试。
魏中显
高级客户经理
18561939726
1746749398
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。 问题反馈反馈点击这里,让我们聆听您的建议与反馈。