Skip to content

Commit 5a35f41

Browse files
committed
去掉access_token的超时管理,交由调用者来管理
1 parent 0cec8eb commit 5a35f41

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

wechat/official.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -246,33 +246,30 @@ class WxApi(object):
246246

247247
API_PREFIX = 'https://api.weixin.qq.com/cgi-bin/'
248248

249-
def __init__(self, appid, appsecret):
249+
def __init__(self, appid, appsecret, api_entry=None):
250250
self.appid = appid
251251
self.appsecret = appsecret
252252
self._access_token = None
253-
self.expires_in = time.time()
253+
self.api_entry = api_entry or self.API_PREFIX
254254

255255
@property
256256
def access_token(self):
257-
if (not self._access_token) or (
258-
self._access_token and time.time() > self.expires_in):
259-
self._access_token = None
257+
if not self._access_token:
260258
token, err = self.get_access_token()
261259
if not err:
262260
self._access_token = token['access_token']
263-
self.expires_in = time.time() + token['expires_in']
264261
return self._access_token
265262
else:
266263
return None
267264
return self._access_token
268265

269-
def flush_token(self):
270-
self._access_token = None
266+
def set_access_token(self, token):
267+
self._access_token = token
271268

272269
def get_access_token(self):
273270
params = {'grant_type': 'client_credential', 'appid': self.appid,
274271
'secret': self.appsecret}
275-
rsp = requests.get(self.API_PREFIX + 'token', params=params,
272+
rsp = requests.get(self.api_entry + 'token', params=params,
276273
verify=False)
277274
return self._process_response(rsp)
278275

@@ -291,13 +288,13 @@ def _get(self, path, params=None):
291288
if not params:
292289
params = {}
293290
params['access_token'] = self.access_token
294-
rsp = requests.get(self.API_PREFIX + path, params=params,
291+
rsp = requests.get(self.api_entry + path, params=params,
295292
verify=False)
296293
return self._process_response(rsp)
297294

298295
def _post(self, path, data, ctype='json'):
299296
headers = {'Content-type': 'application/json', 'Accept': 'text/json'}
300-
path = self.API_PREFIX + path + '?access_token=' + self.access_token
297+
path = self.api_entry + path + '?access_token=' + self.access_token
301298
if ctype == 'json':
302299
data = json.dumps(data, ensure_ascii=False).encode('utf-8')
303300
rsp = requests.post(path, data=data, headers=headers, verify=False)
@@ -311,14 +308,14 @@ def followers(self, next_id=''):
311308

312309
def upload_media(self, mtype, filepath):
313310
# TODO, 对各种类型的文件作合法性校验
314-
path = self.API_PREFIX + 'media/upload?access_token=' \
311+
path = self.api_entry + 'media/upload?access_token=' \
315312
+ self._access_token + '&type=' + mtype
316313
rsp = requests.post(path, files={'media': open(filepath, 'rb')},
317314
verify=False)
318315
return self._process_response(rsp)
319316

320317
def download_media(self, media_id, to_path):
321-
rsp = requests.get(self.API_PREFIX + 'media/get',
318+
rsp = requests.get(self.api_entry + 'media/get',
322319
{'media_ia': media_id}, verify=False)
323320
if rsp.status_code == 200:
324321
save_file = open(to_path, 'wb')

0 commit comments

Comments
 (0)