Exemplo n.º 1
0
 def _parse_token(self, response):
     r = response.json_dict()
     if 'error_code' in r:
         raise ApiResponseError(
             response, r.error_code,
             r.get('error_description', r.get('error', '')))
     return Token(**r)
Exemplo n.º 2
0
    def parse_signed_request(self, signed_request):
        """  用于站内应用
        signed_request: 应用框架在加载时会通过向Canvas URL post的参数signed_request
        Returns: Token, is_valid (令牌, 是否有效)
        """

        def base64decode(s):
            appendix = '=' * (4 - len(s) % 4)
            return base64.b64decode(s.replace('-', '+').replace('_', '/') + appendix)

        encoded_sign, encoded_data = signed_request.split('.', 1)
        sign = base64decode(encoded_sign)
        data = loads(base64decode(encoded_data))
        token = Token(data.oauth_token, data.expires, uid=data.user_id, created_at=data.issued_at, **data)
        is_valid = data.algorithm == u'HMAC-SHA256' and hmac.new(self.app.key, encoded_data,
                                                                 hashlib.sha256).digest() == sign
        return token, is_valid
Exemplo n.º 3
0
 def _parse_token(self, response):
     data = parse(response)
     data['created_at'] = data.get('create_at', None)
     if 'expires_in' not in data:
         data['expires_in'] = data.get('expire_in', None)
     return Token(**data)
Exemplo n.º 4
0
 def _parse_token(self, response):
     r = response.json_dict()
     if 'code' in r and 'msg' in r:
         raise ApiResponseError(response, r.code, r.msg)
     return Token(**r)
Exemplo n.º 5
0
 def test_get_not_exist_attr(self):
     token = Token()
     with self.assertRaises(AttributeError):
         _ = token.not_exist_attr
Exemplo n.º 6
0
 def test_get_attr(self):
     uid = 123
     token = Token(uid=uid)
     self.assertEqual(uid, token.uid)
Exemplo n.º 7
0
 def test_set_expires_in(self):
     expires_in = 60 * 60
     token = Token('token_string', expires_in)
     self.assertAlmostEqual(expires_in, token.expires_in, -1)
Exemplo n.º 8
0
 def test_expired_access_token(self):
     token = Token('token_string', -60 * 60)
     self.assertTrue(token.is_expires)
Exemplo n.º 9
0
 def test_empty_access_token(self):
     token = Token('')
     self.assertTrue(token.is_expires)
Exemplo n.º 10
0
 def test_access_token_without_expired_at(self):
     token = Token('token_string')
     self.assertFalse(token.is_expires)
Exemplo n.º 11
0
 def test_access_token(self):
     token = Token('token_string', 60 * 60)
     self.assertFalse(token.is_expires)
Exemplo n.º 12
0
 def _parse_token(self, response):
     data = parse_querystring(response.text)
     if 'errorCode' in data:
         raise ApiResponseError(response, data['errorCode'],
                                data.get('errorMsg', '').strip("'"))
     return Token(**data)
Exemplo n.º 13
0
 def __init__(self, app=App(), token=Token(), openid=None, clientip=None):
     super(Client, self).__init__(app, token)
     self.openid = openid
     self.clientip = clientip
Exemplo n.º 14
0
 def __init__(self, app=App(), session=None):
     super(Client, self).__init__(app, Token(session))
Exemplo n.º 15
0
 def _parse_token(self, response):
     data = parse(response)
     return Token(**data)