需求背景: 最新需要调用微信公众号api 去微信公众号采集 发布文章数据。
(本片文章的意义:根据自己开发的方案来提供思路,当然那不会提供代码。代码是最没有 含金量的东西。)
1:遇到的坑:首先 想到的是调用 https://api.weixin.qq.com/cgi-bin/freepublish/batchget
但是这个接口有bug.因为我们公众号发布的文章 都是每天 群推给所有的粉丝,而这个接口是无法获取所有的群推文章数据
解决方案:调用草稿箱接口
所以就涉及到一个 解决思路 (我在生产中就是这样解决解决的):
1:在公众号中找到 草稿箱
2:选择已有图文,将今天公众号发布的文章保存在 草稿箱里面
3:将已经发布的文章,保存为草稿箱时,标题 前缀 添加 “草稿箱”。目的就是达标,java代码 采集时 用于区分 使我们想要的数据,而不是 运维人员 写到一半的半成品文章
4:采集到文章后:需要解决的是 重复采集的问题,因为都是通过定时任务来采集的,需要来避免重复采集的问题。将采集到的字段
thumb_media_id;//图文消息的封面图片素材id(一定是永久MediaID) 和 title 来查询是否当前表是否采集过数据。采集过则不再采集。
5:将微信返回的文章 保存生成一个 html,将对应的html 名字存在 当前表里。展示文章时,则解析html即可 (最好解析html时,将微信中涉及到的图片,上传到阿里云上面,不要通过代理实现,不然有坑,微信会有防护访问限制访问。)
6:当前表新增一个字段,标记是否采集过,如果采集过,定时任务删除即可。
7:定时任务采集微信数据时,不要太频繁。如果是 5分钟一次,或者2分钟一次。会超过接口次数限制。本月就无法 采集了。需要删除这个调用次数。
只提供解决思路,不会提供代码。代码这种,大家一定有自己实现的逻辑。我的代码不一定是最优的