网站首页 > 开源技术 正文
access_token是公众号和小程序的全局唯一接口调用凭证,调用公众号和小程序各服务端接口时都需要使用到access_token。
微信官方对于每日接口调用的次数都做了限制,这其中包括了生成access_token的接口,因此官方建议开发者使用中控服务器统一获取和刷新access_token。
中控服务器好处在于:1. 保证access_token每日都不会超出访问限制,保证服务的正常;2. 提高调用其他服务的接口的性能,因为不用再每次调用接口前先发送一次access_token获取请求。
本文主要讲解如何开发一个单文件的access_token中控脚本,该脚本能够同时以命令行和Web形式执行。
思路
首先我们需要使用数据库或Redis存储公众号或小程序的应用信息,包括appid和appkey。
其次我们需要调用微信获取access_token信息的接口去获取access_token和access_token有效期(默认为expires_in字段)。
最后我们将接口获取到的access_token和有效期缓存到Redis中,这样下次请求access_token时直接从Redis返回未过期的值即可。
函数原型:getAccessToken(string $appid, bool $refresh = true): ?string。其中参数$appid为公众号或小程序的应用ID。参数$refresh表示是否强制刷新缓存。
开发(PHP版)
第一步、开发实用工具集Utils
第二步、封装Redis操作
我们需要将应用信息以Hash结构存储到Redis中;在调用接口时为了保证在分布式环境下只允许一个请求能够调用微信接口,因此我们还需要创建一个分布式锁。
PHP环境操作Redis可以通过两个扩展来实现:a. C语言版phpredis b. PHP版Predis。C语言版性能优于PHP版,但是需要编译PHP扩展,因此对于无权限编译扩展的环境下不适用。本文使用PHP版Predis扩展。
使用Composer直接安装Predis扩展:
composer require predis/predis
第三步、封装微信获取AccessToken接口
第四步、封装微信菜单管理接口作为测试使用
第五步、创建AccessToken中控服务器类
第六步、创建Demo
该demo主要演示使用中控接口获取access_token,添加公众号菜单,获取公众号菜单。
小技巧
一、获取公众号接口测试号
打开公众号开发文档 > 开始开发 > 接口测试号申请 > 进入微信公众号测试号申请系统 > 微信扫码登录即可。
二、获取小程序接口测试号
打开小程序开发文档 > 工具 > 开发辅助 > 测试号 > 申请地址 > 微信扫码登录即可。
【点击下面链接下载脚本程序】
公众号【web说】不局限于web知识分享。
猜你喜欢
- 2024-11-16 2023最新 Redis面试题及答案(redis面试题详解)
- 2024-11-16 kubernetes 分布式集群架构(kubernetes集群中的minions)
- 2024-11-16 安布罗吉奥-德-普雷蒂斯 | 文艺复兴时期的画家
- 2024-11-16 laravel项目利用twemproxy部署redis集群的完整步骤php实例
- 2024-11-16 win10+php+lua+docker+redis+AB测试,实现商品秒杀代码实现
- 2024-11-16 什么是Redis缓存穿透?redis面试题及答案乐分享(附面试题大全)
- 2024-11-16 Laravel 5.5 升级到 6.0 踩坑记录
- 2024-11-16 吃透这50道redis面试题,面试不在惧怕问redis
- 2024-11-16 Linux服务器CentOS8安装Redis那点事
- 2024-11-16 六、redis中AKF问题解决方案(redis acl)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)