前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python快速调用Teambition接口

Python快速调用Teambition接口

作者头像
Python碎片公众号
发布2021-02-26 14:30:58
2.1K0
发布2021-02-26 14:30:58
举报
文章被收录于专栏:Python碎片公众号的专栏

一、Teambition介绍

Teambition是一个简单、高效的项目协作工具,是一款企业协作软件,很多企业用来作为任务跟踪管理和BUG管理工具.

2019年阿里收购了Teambition,不知道未来使用的企业会不会越来越多.

Teambition有导入导出功能,可以导入导出excel,csv文件,在工作中很方便.一般来说,除了一开始使用时会批量导入任务,其他时候很少使用批量导入,任务直接创建就可以了.

企业在定期(如每周)跟踪任务进度时,会经常需要批量导出.但批量导出的格式比较固定,有时候可能不符合我们的要求,如需要按老板指定的格式,或者需要将数据添加到其他平台上等.

Teambition提供了API接口,我们可以注册成为开发者,然后通过接口获取Teambition的数据,按照需求的格式保存和分析.

二、注册Teambition开发者

1.登录Teambition,要有管理员的权限,点击左上角的菜单按钮,然后点击进入企业的"管理后台".

2.然后点击"应用管理"

3.在应用管理页面点击"立即创建"创建应用,弹出创建应用的窗口

4.在应用创建窗口中填写"应用名称",这个应用名称是自定义的,所属企业为当前管理员用户所在的企业,然后点击确定,就会进入teambition开发者中心的"基本信息"界面

5.在"基本信息"界面,已经默认生成了当前应用的Client ID和Client Secret,我们在调用Teambition API时,会使用到这两个值

6.在teambition开发者中心的"OAuth 2配置"页面,填入回调地址,这里的回调地址填企业Teambition首页的地址就可以了,然后点保存,下方的"OAuth 2介绍"里介绍了通过Client_id和redirect_url获取一次性code,然后根据code获取access_token的步骤,Teambition所有的API都要通过access_token来调用

7.在teambition开发者中心的"Webhook 配置"页面填写teambition服务器地址,点击保存

完成以上步骤后,就可以根据Client ID,Client Secret,redirect_url获取到access_token,然后调用Teambition的API

三、获取Teambition access_token

这一步是调用Teambition API最重要的步骤,需要花点时间完成.直接上代码,在注释里说明每步的作用.

发送请求通过强大的requests库,因为获取code是通过回调URL携带回来的,登录过程需要点击"授权登录"按钮,所以会使用selenium库模拟浏览器输入内容和点击按钮,具体的使用方法考:

Python使用Selenium模拟浏览器输入内容和鼠标点击

sleep是因为Teambition登录时会有加载过程,用sleep来等待页面加载.

记得下载对应浏览器版本的chromedriver.exe到代码所在目录下,然后把company_id, client_id, client_secret, user_email, user_password换成自己的值,然后运行就可以了获得token了.

打印出token后,将token值赋值给__init__()下的self.token,后面的方法就可以直接使用token值了.完整伪代码如下:

代码语言:javascript
复制
import requests
from selenium import webdriver
import time
 
 
class GetTeamBitionEvents(object):
 
    def __init__(self):
        # 进入teambition企业首页的url,可以通用,后面拼接不同的企业id即进入不同企业的首页
        self.company_url = 'https://www.teambition.com/organization/'
        # 登录Teambition默认进入您的企业首页,url中有企业的id,复制到此,企业创建后id不会改变
        self.company_id = 'xxxxxxxxxxxxxxxxxxxxxx'
        # 在开发者中心OAuth2配置处填的回调地址,与这里拼接的回调地址保持一致
        self.callback_url = self.company_url + self.company_id
        # 在teambition开发者中心,创建应用时的Client ID,复制到此
        self.client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
        # 在teambition开发者中心,创建应用时的Client Secret,复制到此
        self.client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
        # 获取一次性code的url
        self.auth_url = 'https://account.teambition.com/oauth2/authorize?client_id=' + self.client_id + '&redirect_uri=' + self.callback_url
        # 具有管理员权限的用户邮箱,填您的登录邮箱
        self.user_email = 'wuyazi@alibaba.cn'
        # 您的登录密码
        self.user_password = 'qwert!@#$%'
        # 获取token的url
        self.token_url = 'https://account.teambition.com/oauth2/access_token'
        self.token = ''
 
    def get_code(self):
        """
        模拟浏览器获取code
        """
        # 声明一个浏览器对象,指定使用chrome浏览器
        browser = webdriver.Chrome()
        try:
            # get打开指定的url,传入要打开的url
            browser.get(self.auth_url)
            browser.find_element_by_name('email').send_keys(self.user_email)
            browser.find_element_by_name('password').send_keys(self.user_password)
            browser.find_element_by_class_name('anim-blue-all').click()
            time.sleep(2)
            browser.find_element_by_class_name('authorize-btn').click()
            code = browser.current_url.split('=')[1]
            time.sleep(10)
            browser.close()
            return code
        except Exception as e:
            print("模拟登录获取code失败:{}".format(e))
            browser.close()
 
    def get_token(self):
        """
        根据code获取token
        """
        code = self.get_code()
        access_data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'code': code}
        result = requests.post(self.token_url, data=access_data)
        return result.text
 
 
if __name__ == '__main__':
    tb = GetTeamBitionEvents()
    token = tb.get_token()
    print(token)

四、根据access_token调用Teambition API

Teambition API decumentation: https://docs.teambition.com/

Teambition接口文档中提供了所有可以调用的接口,如果有更新,调用的时候以最新的为准就可以了.

在上面的代码后面(同一个类里),加入如下两个类方法,分别是根据url获取数据的方法,根据项目id获取项目中所有事件的方法.

按照接口文档调用时如果有问题,也可以与Teambition后台开发人员联系.

代码语言:javascript
复制
    def get_by_url(self, url):
        """
        根据url获取结果
        """
        params = {'access_token': self.token['access_token']}
        try:
            result = requests.get(url, params=params)
            return result.text
        except Exception as e:
            print(e)
            return
 
    def get_event_by_project(self, project_id):
        """
        根据项目id获取项目中的events
        """
        url = 'https://api.teambition.com/api/projects/' + project_id + '/tasks'
        params = {'access_token': self.token['access_token'], 'all': 'true'}
        try:
            result = requests.get(url, params=params)
            return result.text
        except Exception as e:
            print(e)
            return

可以看到,调用非常简单,直接使用requests发送请求,就会返回json数据,从数据中解析我们需要的数值即可.

然后根据自己需要的值到接口文档中找到适合的API,如法炮制~~~

(事实上,python有一个第三方库就叫teambitiom,对接口做了封装,但亲自试用了,很多接口反而不通,应该是很久没有人维护了,所以直接调 Teambition API即可)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档