33import hashlib
44import hmac
55from chinaapi .utils import parse_querystring
6- from chinaapi .open import ClientBase , Method , OAuth2Base , Token as TokenBase , App
6+ from chinaapi .open import ClientBase , Method , OAuth2Base , Token , App
77from chinaapi .exceptions import ApiResponseError
88from chinaapi .jsonDict import loads
99
@@ -71,18 +71,6 @@ def _is_retry_error(self, e):
7171 return e .code in RETRY_CODES
7272
7373
74- class Token (TokenBase ):
75- """
76- uid:授权用户的uid
77- created_at:令牌创建日期,为timestamp格式
78- """
79-
80- def __init__ (self , access_token = None , expires_in = None , refresh_token = None , ** kwargs ):
81- super (Token , self ).__init__ (access_token , expires_in , refresh_token , ** kwargs )
82- self .uid = kwargs .pop ('uid' , None )
83- self .created_at = kwargs .pop ('created_at' , None )
84-
85-
8674class OAuth2 (OAuth2Base ):
8775 BASE_URL = 'https://api.weibo.com/oauth2/'
8876 AUTH_URL = BASE_URL + 'authorize'
@@ -93,9 +81,9 @@ def __init__(self, app):
9381
9482 def _parse_token (self , response ):
9583 data = parse (response )
96- data ['created_at' ] = data .pop ('create_at' , None )
84+ data ['created_at' ] = data .get ('create_at' , None )
9785 if 'expires_in' not in data :
98- data ['expires_in' ] = data .pop ('expire_in' , None )
86+ data ['expires_in' ] = data .get ('expire_in' , None )
9987 return Token (** data )
10088
10189 def revoke (self , access_token ):
@@ -127,7 +115,7 @@ def base64decode(s):
127115 encoded_sign , encoded_data = signed_request .split ('.' , 1 )
128116 sign = base64decode (encoded_sign )
129117 data = loads (base64decode (encoded_data ))
130- token = Token (data .oauth_token , data .expires , uid = data .user_id , created_at = data .issued_at )
118+ token = Token (data .oauth_token , data .expires , uid = data .user_id , created_at = data .issued_at , ** data )
131119 is_valid = data .algorithm == u'HMAC-SHA256' and hmac .new (self .app .key , encoded_data ,
132120 hashlib .sha256 ).digest () == sign
133121 return token , is_valid
0 commit comments