這段時間一直在學習企業微信的api撰寫,這個程序中access token的獲取非常重要,否者,就不能入門,在csdn上偶爾看到了一個高手的代碼,但是在使用中,總出現access token過期的情況,就對代碼進行了修改,完全可以了
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import requests
import json
class WeChat:
def __init__(self):
self.CORPID = '*********' # 企業ID,在管理后臺獲取
self.CORPSECRET = '********' # 自建應用的Secret,每個自建應用里都有單獨的secret
def _get_access_token(self): #獲取access_token
url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
values = {'corpid': self.CORPID,# 企業ID,
'corpsecret': self.CORPSECRET,# 應用的Secret
}
req = requests.post(url, params=values)
data = json.loads(req.text)
return data["access_token"]
def get_access_token(self):
cur_time = time.time() #獲取現在的時間
try:
with open('./tmp/access_token.conf', 'r') as f:
t, access_token = f.read().split()#讀取檔案中的t即上次獲取access token的時間和access token的值
if 0 < cur_time - float(t) < 7260:#判斷access token是否在有效期內
return access_token#如果在,則回傳讀取的access token
else:#否則,先打開檔案,權限可以編輯
with open('./tmp/access_token.conf', 'w') as f:
access_token = self._get_access_token()#獲取access token
f.write('\t'.join([str(cur_time), access_token]))#把獲取到的Access token和當前時間寫入檔案
return access_token#回傳access token的值
except:#如果是第一次運行,則運行此陳述句,獲取access token的值
with open('./tmp/access_token.conf', 'w') as f:
access_token = self._get_access_token()
cur_time = time.time()
f.write('\t'.join([str(cur_time), access_token]))
return access_token
if __name__ == '__main__':
WeChat().get_access_token()#除錯陳述句
下一步,我需要實作獲取多個應用的access token,比如家校通訊錄的access token,打卡應用的access token,把它們封裝在一個類中,
一些對小白的說明:
1.文中的access_token.conf是一個檔案,
2.這句./tmp/access_token.conf’的意思就是在當前.py檔案的檔案夾內新建檔案夾,命名為tmp,在檔案夾tmp中新建檔案,檔案名稱為access_token.conf,也可以新建一個文本檔案,把檔案名字修改為這個名字就可以,
3.非常感謝csdn的大神們,看著代碼學習要提高很多效率,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/230761.html
標籤:其他
