Teambition企业内部应用开发指南

Teambition企业内部应用Python开发指南注意:此文章并非搬运,一小部分仅为借鉴 。Teambition提供了API接口,我们可以注册成为开发者,然后通过接口获取Teambition的数据,按照需求的格式保存和分析.
一、准备阶段1.登录Teambition企业账号,要有管理员的权限,点击左上角的菜单按钮,然后点击进入企业的“全部应用”.最后点击“应用商店”

Teambition企业内部应用开发指南

文章插图
Teambition企业内部应用开发指南

文章插图
2.点击“开放平台”,此页面有后期需用的API文档,可以先收藏 。点击“立即创建”
Teambition企业内部应用开发指南

文章插图
3.创建企业内部应用:填写名称和描述4.打开应用凭证和基本信息 , 获取ID和Secret(F12在代码中可以直接复制)
Teambition企业内部应用开发指南

文章插图
5.打开左侧栏中的“应用开发”--“应用权限”,根据需要勾选6.打开“应用发布” , 填写信息,发布 。
二、Python脚本编写1.找到对应的jwt包,https://jwt.io/libraries,下载安装(推荐PyJWT:至少我用没有问题)2.appAccessToken的获?。ㄗ钪匾囊徊剑?
  • 因为文档中没有Python实现的任何描述,这里只提供个人写法
from datetime import datetime, timedeltaimport jwtimport requestsimport timefrom Config import getConfig class GetTeamBitionEvents(object):def __init__(self):self.app_id = getConfig('config', 'Get_TB_Data', 'app_id')self.app_secret = getConfig('config', 'Get_TB_Data', 'app_secret')def get_aptoken(self):now_time = int(time.time())expire_time = now_time + 36000# 1 小时后超时token_dict = {'iat': now_time,'_appId': '%s' % self.app_id,'exp': expire_time,}headers = {'typ': 'jwt','alg': 'HS256'# 声明所使用的算法}encoded = jwt.encode(payload=token_dict, key=self.app_secret, headers=headers,algorithm='HS256')# .decode('ascii')return encoded
  • 个人习惯将固定的重要数据存放在config文件中 , 你也可以直接写入字符串
3.获取Token后就可以开始调用API了 , 我这里将“创建项目任务类型”作为示例
  • 文档链接:开放平台文档中心 (teambition.com)
  • 主要看六点
    • URL:https://open.teambition.com/api/v3/sfc/create
    • Method:POST
    • 权限:tb-core:sfc:create
    • 请求头
    • 查询参数
    • 请求体
  • 有了这些信息,就可以直接上代码了
from __future__ import absolute_import, unicode_literalsimport requests, time, jwtclass GetTeamBitionEvents(object):def __init__(self):self.app_id = ''# 必填self.app_secret = ''# 必填self.company_url = 'https://www.teambition.com/organization/' # 固定self.company_id = ''# 一些API会用到公司IDself.callback_url = self.company_url + self.company_id# 固定self.user_id=''# 一些API会用到个人IDself.auth_url = 'https://account.teambition.com/oauth2/authorize?client_id=' + self.app_id + '&redirect_uri=' + self.callback_url# 固定def get_aptoken(self):now_time = int(time.time())expire_time = now_time + 36000# 1 小时后超时token_dict = {'iat': now_time,'_appId': '%s' % self.app_id,'exp': expire_time,}headers = {'typ': 'jwt','alg': 'HS256'# 声明所使用的算法}encoded = jwt.encode(payload=token_dict, key=self.app_secret, headers=headers,algorithm='HS256')# .decode('ascii')return encodeddef post_proj_type(self,params,object):url = f'https://open.teambition.com/api/v3/sfc/create'app_token = (self.get_aptoken()).replace("\n", "").replace('\r', '')headers = {'Authorization': 'Bearer %s' % app_token,'X-Tenant-Id': '%s' % self.company_id,'X-Tenant-Type': 'organization','X-Operator-Id': self.user_id}return requests.post(url,json=object,params=params, headers=headers)if __name__ == '__main__':tb = GetTeamBitionEvents()projectId=tb.company_id#测试企业-项目管理副本roleId=tb.user_id# 测试角色object={'name':'测试类型'}params={'projectId':projectId}result = tb.post_proj_type(params,object)print(result.json()["result"])
  • 其中params为查询参数,json为请求体 。根据具体API要求
    • 'params'和'object'中参数用,分隔
    • requests的方法有get/post/del/put根据需要使用
    • 参数后有勾选必填的,必须要有,不然会报错
  • 记得打开相应权限
三、一些辅助脚本Config.pyimport configparserimport os# 读取配置文件def getConfig(filename, section, option):""":param filename 文件名称:param section: 服务:param option: 配置参数:return:返回配置信息"""# 获取当前目录路径proDir = os.path.split(os.path.realpath(__file__))[0]# print(proDir)# 拼接路径获取完整路径configPath = os.path.join(proDir, filename)# print(configPath)# 创建ConfigParser对象conf = configparser.ConfigParser()# 读取文件内容conf.read(configPath)config = conf.get(section, option)return config

推荐阅读