当前位置: 首页 > news >正文

Python实现企业微信Token自动获取到SQLite存储

背景

我们有很多跟企业微信对接数据集成的项目,企微的access_token是有有效期的,一个应用的token可能会多个任务共用,实现了一个工具类来保存access_token

环境准备

  • Python 3.6+
  • 所需库:
    • requests(用于HTTP请求)
    • sqlite3(Python内置数据库操作)

3. 实现方案

数据库设计

我们使用SQLite作为Token存储方案,具有以下优点:

  • 单文件数据库,无需额外服务
  • 轻量级,适合小型应用
  • 支持基本的SQL操作

直接上代码

#-*- coding:utf-8 -*-
#Author:Evan
#Mail:evan#chengwenit.com#管理企微应用tokenimport requests
import cjcconfig
import time
import chw_sqllite_clientclass workwechatapp():# 从企业微信获取token写入sqllite数据库的app表def get_qwtoken_cjcdb(self,corpid,appsecret,appname):"""获取企业微信应用access_tokenappsecret:应用密钥appid:应用idreturn:access_token"""params = {'corpId': corpid,'corpSecret': appsecret}response = requests.get(url=cjcconfig.get_token_url,params=params)if response.status_code == 200:response = response.json()if response['errcode'] == 0:print('获取token成功')sql = chw_sqllite_client.sqllitToolSql(cjcconfig.sqldbname)sql.execute("REPLACE INTO chw_qw_app (appsecret,apptoken,synctime,memo) values(?,?,?,?);",(appsecret,response['access_token'],str(time.time()),appname))if sql.execute:print("更新token成功")sql.close()return Trueelse:print("更新token失败")sql.close()return Falseelse:print('获取token失败')return Falseelse:print('请求失败')return False   # 根据appname从sqllite数据库企微APP表中获取tokendef get_cjc_qw_app_token(self,appname):# 获取企业微信tokensql = chw_sqllite_client.sqllitToolSql(cjcconfig.sqldbname)res = sql.query("select apptoken from chw_qw_app where memo=?;",(appname,))if res is None:return Falseelse:return res[0][0]if __name__ == "__main__":"""测试代码"""# 从企业微信获取token更新到sqllite中#x = workwechatapp()#applist = cjcconfig.applist#for i in range(len(applist)):#    x.get_qwtoken_cjcdb(cjcconfig.corpId,applist[i]["appsecret"],applist[i]["appname"])## 从sqllite中获取token#a = x.get_cjc_qw_app_token("企微通讯录")#b = x.get_cjc_qw_app_token("企微成集云")#print(a)#print(b)```
## 注意事项
- Token过期处理
- 数据库文件权限
- 并发访问考虑
- 错误处理与重试机制

相关文章:

  • 微服务拆分 SpringCloud
  • 渲染学进阶——机械动力的渲染(3)
  • 对微服务的了解
  • 准确识别检索头,提高大模型长上下文能力
  • MyBatis与JPA有哪些不同?
  • 【MATLAB去噪算法】基于VMD联合小波阈值去噪算法(第六期)
  • CNN卷积神经网络实战(1)
  • 执行 PGPT_PROFILES=ollama make run下面报错,
  • 记录:安装VMware、Ubuntu、ROS2
  • Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
  • 65、【OS】【Nuttx】任务休眠与唤醒:nxsig_clockwait
  • BeikeShop - 一个开源、用户友好的跨境电子商务平台
  • [学习] 深入解析Z变换:从数学基础到工程应用
  • 基于高性能的光频域反射(OFDR)分布式光纤传感解决方案
  • 爬虫技术:从基础到高级,探索数据抓取的奥秘
  • 写实数字人课程制作平台:教育科技的未来已来
  • 在劲牌工厂,探寻一瓶草本酒的科技之旅
  • C++ 继承特性
  • 3-19 WPS JS宏调用工作表函数(JS 宏与工作表函数双剑合壁)学习笔记
  • skynet源码学习-skynet_env守护进程
  • wordpress点击网页效果/排名优化软件点击
  • 购物网站开发总结报告/今日国际新闻事件
  • 重庆开发网站/产品推广文章
  • 企业网站建设有什么/做seo推广一年大概的费用
  • 建设银行网站的机构/网络科技公司经营范围
  • 网站建设怎么谈/软文写作的技巧