有同学提问,他们公司的微信小程序,某个业务板块需要调用微信的openid,但是目前访问量巨大,已经突破了微信小程序对openid的最多次数限制,很多用户无法正常开展业务,该怎么办呢?
经过丁老师分析和研究,发现该公司的小程序因访问量巨大,调用openid的频率已经超过了微信小程序的限制,如图:

其实这个问题,不算什么特别复杂的业务问题。只是这个公司的小程序后端开发人员,在对调用openid时没有做出访问量预判,只是简单实现的了业务逻辑,并没有考虑到实际业务中的访问频次及数量需求。
丁老师曾主导开发几个千万级IP的产品,这个问题有很多种方案可以解决。
解决方法一:优化调用逻辑,对openid做数据缓存
同一微信公众号/小程序对单一用户的openid一般是固定的,是不会变的(用户解除绑定、微信AppID变更除外),当业务功能需要使用openid时,没有必要每次都通过微信接口去调用获取,这样会造成太多的资源浪费。完全可以将openid存储起来,存到数据库也好,存到Redis、Memcached也罢,反正就是存起来,不要每次都去读取。
解决方法二:调整调用方法,使用unionId
如果真的是,即使将openid做缓存了,数据量还是巨大,那么可以注册多个公众号、小程序,然后绑定微信开发者平台,使用统一的unionID来代替openid。
解决方法三:清零调用次数
微信提供了openid调用次数的清零接口,每月有10次清零机会。可调用接口https://api.weixin.qq.com/cgi - bin/clear_quota?access_token=ACCESS_TOKEN,请求体为{"appid": "APPID"}来重置调用次数。但如果超过10次清零上限,就会返回错误码48006,提示禁止清零,此时只能等待次月自动重置。
解决方法四:申请提额
临时提额:可在微信公众平台的“接口权限”处,查询临时提额机会,通常每3个月有一次机会,可根据提示申请临时提高调用额度。
永久提额:若业务量持续增长,可通过微信开放平台提交工单申请永久扩容,申请时需提供业务量证明等相关材料。此外,增加粉丝数量也可能会使部分接口配额自动提升,如模板消息、客服消息等接口,粉丝数达到10万/100万/1000万时,可能对应更高限额。升级账号类型也有助于提升配额,例如认证服务号比未认证账号拥有更高基础配额。
以上就是几个常用的处理方法。当然,还有更多的方法可以解决这个问题,如果你也恰巧遇却又不知如何解决,欢迎添加丁老师进行咨询和讨论。
有同学提问,使用的Spring Boot框架,有两个微服务,为了实现追踪,使用了<artifactId spring-cloud-sleuth-zipkin</artifactId 以及zipkin。A服务是生产者,通过Ra...
有一个使用ThinkPHP框架开发程序的同学,遇到了这样一个问题,程序的代码明明已经改了,但在执行时还是按照以前的代码逻辑执行的,新修改的没有起到效果,并且他为了测试程序,都已经把这个程序文件删除了,但程序还是能执行,不得已求助于丁老师...
dedecms cookies泄漏导致SQL漏洞
微信小程序自2023年8月起,开始对《手机号快速验证组件》进行收费,每个小程序有1000次的免费额度,超过额度就要收费。说白了就是以后在使用微信小程序获取用户手机(用户主动授权)的时候,需要按次数收费了。那么,在当前的经济状况下,如何做...
在使用uniapp开发app和小程序时,经常会用到打开app/小程序时,根据登录状态判断是显示首页还是跳转登录页的功能。此功能在app.vue的onlaunch方法中定义,方法如下:onLaunch: function() { const ...
phpstorm程序中,在打开html时总会出现对 style属性的折叠和隐藏,这样在检查代码的时候非常不直观,容易漏掉很多东西,非常的不方便,如图:
在使用uniapp开发微信小程序,微信开发者工具调试时,明明已经给了获取位置权限,但还是提示需要打开gps获取位置,具体解决办法如下:打开uniapp的manifest.json文件,切换到源码模式,找到mp-weixin节点"p...
videojs是一款非常不错的html video播放器插件,很多同学经常在群里问我,说丁老师这个videojs怎么设置为宽度或者高度自适应呢,不想把video的width和height写死,有没有什么办法呢。丁老师经过研究发现啊,vide...