Teambition企业内部应用Python开发指南注意:此文章并非搬运,一小部分仅为借鉴 。Teambition提供了API接口,我们可以注册成为开发者,然后通过接口获取Teambition的数据,按照需求的格式保存和分析.
一、准备阶段1.登录Teambition企业账号,要有管理员的权限,点击左上角的菜单按钮,然后点击进入企业的“全部应用”.最后点击“应用商店”
文章插图
文章插图
2.点击“开放平台”,此页面有后期需用的API文档,可以先收藏 。点击“立即创建”
文章插图
3.创建企业内部应用:填写名称和描述4.打开应用凭证和基本信息 , 获取ID和Secret(F12在代码中可以直接复制)
文章插图
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文件中 , 你也可以直接写入字符串
- 文档链接:开放平台文档中心 (teambition.com)
- 主要看六点
- URL:
https://open.teambition.com/api/v3/sfc/create
- Method:POST
- 权限:tb-core:sfc:create
- 请求头
- 查询参数
- 请求体
- URL:
- 有了这些信息,就可以直接上代码了
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
根据需要使用 - 参数后有勾选必填的,必须要有,不然会报错
- 'params'和'object'中参数用
- 记得打开相应权限
import 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
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IOS12未受信任的企业级开发者怎么解决
- 如何解决未受信任的企业级开发者的问题(如何安装未受信任的企业级开发者)
- 记一次 .NET 某企业OA后端服务 卡死分析
- ipad未受信任的企业级开发者怎么解决(ipad开发者模式)
- 未受信任的企业级开发者怎么设置(未受信任的企业级开发者有危险吗)
- ipad未受信任的企业级开发者怎么打开(软件在ipad上不受信任)
- ios15未信任企业开发者怎么解决(ios15找不到企业信任)
- iphone未受信任的企业级开发者怎么解决
- 未受信任的企业级开发者怎么解决(未受信任的企业级开发者有危险吗)
- 为什么中国的To B企业都活的很“惨”?