teambition.api.oauth 源代码

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import requests
from furl import furl

from teambition.api.base import TeambitionAPI


[文档]class OAuth(TeambitionAPI):
[文档] def get_authorize_url(self, redirect_uri, state='', lang='zh'): """ 获取授权地址 详情请参考 http://docs.teambition.com/wiki/oauth2#oauth2-authorize :param redirect_uri: 授权回调地址 :param state: 原样返回给客户端 :param lang: 语言类型,可选 zh, en,默认为 zh :return: 授权地址 """ oauth2_url = furl('https://account.teambition.com/oauth2/authorize') oauth2_url.add(args={ 'client_id': self.client_id, 'redirect_uri': redirect_uri, 'state': state, 'lang': lang }) return oauth2_url.url
[文档] def fetch_access_token(self, code, grant_type='code'): """ 根据 code 获取 access_token 详情请参考 http://docs.teambition.com/wiki/oauth2#oauth2-access_token :param code: 授权完成返回的 code 参数值 :param grant_type: 固定值为 code :return: access_token 值 """ res = self._post( 'oauth2/access_token', data={ 'client_id': self.client_id, 'client_secret': self.client_secret, 'code': code, 'grant_type': grant_type } ) token = res['access_token'] self._client._access_token = token return token
get_access_token = fetch_access_token # Alias
[文档] def check(self, access_token=None): """ 验证 access_token 是否合法 详情请参考 http://docs.teambition.com/wiki/oauth2#oauth2-check :param access_token: 可选,access_token :return: 返回的 JSON 数据包 """ token = access_token or self.access_token headers = { 'Authorization': 'OAuth2 {0}'.format(token), } valid = True try: self._get( 'api/applications/{0}/tokens/check'.format(self.client_id), headers=headers ) except requests.HTTPError: valid = False return valid