天天看点

python 微信公众号access_token的获取

通过redis存储access_token,有效期设置为1小时(也可将access_token和生成时间存放在文件或数据库中,根据time.time()获取当前时间与生成时间判断access_token是否过期(2小时),过期则更新数据,否则直接取)
#-*- coding: utf-8 -*-
# filename: basic.py
import urllib
import time
import json
import httplib
from django.core.cache import cache

logger = LOGHandler.getlogger()
class Basic:  
    def __init__(self):
        self.__accessToken = ''
        self.__leftTime = 0
    def __real_get_access_token(self):#发送请求得到access_token
        try:
            logger.debug('正在获取access')
            appId = 'your appid'
            appSecret = 'your appSecret'
            postUrl = ("http://api.weixin.qq.com/cgi-bin/token?grant_type="
            "client_credential&appid=%s&secret=%s" % (appId, appSecret))
            logger.debug(postUrl)
            urlResp = urllib.urlopen(postUrl).read()
            logger.debug(urlResp)
            urlResp = json.loads(urlResp)
            logger.debug(urlResp['access_token'])
            self.__accessToken = urlResp['access_token']
            self.__leftTime = urlResp['expires_in']
            logger.debug('获得access_token')
        except Exception, e:
            logger.debug(e.message)
    def get_access_token(self):
        if self.__leftTime < 10:
            try:
                if cache.has_key('access_token'):
                    self.__accessToken = cache.get('access_token')
                    logger.debug(self.__accessToken)
                else:
                    self.__real_get_access_token()
                    cache.set('access_token', self.__accessToken, 60 * 60)
                    logger.debug(self.__accessToken)
            except Exception,e:
                logger.debug(e)
        return self.__accessToken
    def run(self):
        while(True):
            if self.__leftTime > 10:
                time.sleep(2)
                self.__leftTime -= 2
            else:
                self.__real_get_access_token()


      
#调用示例 
bc = Basic()
accessToken = bc.get_access_token()
logger.debug(accessToken)      

继续阅读