一文搞定判断小程序用户有没有关注公众号问题

1.需求来源

最近工作上安排了一个停车场的小程序开发工作,甲方提出了这样一个需求,如果用户关注了某个公众号(甲方自己的公众号),就给用户增加一小时的免费停车时长。听起来是不是很扯淡,但确实是实际生活中会遇到的问题(合情合理)。小程序和公众号的用户怎么打通呢?怎么判断小程序的用户关注过公众号呢?我刚开始也是一头雾水,慢慢摸索之后,豁然开朗,下面讲一下我的解决思路。

2.解决方案

2.1.思路

1.首先小程序用户和公众号用户打通需要使用到微信的UnionID机制,简单解释一下,这是微信给我们的唯一标识,在一个微信开放平台下绑定所有应用的用户都有一个唯一标识,那我们首先第一步,先将小程序和公众号绑定到一个微信开放平台下。

微信开放平台地址如下:微信开放平台

如何判断用户有没有关注公众号呢?我总结了两种办法

2.2方法一

先读文档

微信开发文档:接入概述 | 微信开放文档

先配置好公众开的开发配置

配置好之后就可以接入开发了

1.先获取到access_token

2.在获取这个公众号关注用户列表

这里一次最多拿到一万条数据,如果用户数据量大的情况下需要遍历调用拿到所有数据

3.在通过拿到的openId查用户详情

这里接口有调用频次限制,每日最大五千万,绝大多数情况下都是够用的。但是性能确实不好,比如我有二十万用户,这个地方我就得调用二十万次。。。。。。

4把用户详情中的UnionID存在一个集合里

5.然后判断用户登录的时候返回的UnionID是否在这个集合里,如果在就是关注了,不在就是没关注

看到这里估计兄弟们都说这个方法太笨了,愚蠢,我们一起来看看这个方法有哪些缺点

1.步骤繁琐,还需要遍历集合,但是没办法呀,微信只提供了用openId得到UnionID的api,没有办法能通过UnionID查对应某个应用的用户的openId的api,这就让人很难办。

2.比如我用户关注了,然后我又取消关注了,这种做法就会有弊端。没有办法实时更新,所以招惹中方法只适用于某些特定的场景,比如我要给关注公众号的用户发放奖励这种主动的情景。

2.3方法二

用户关注/取消关注公众号是一个事件,微信会把这个事件推送到开发配置填的地址上,我们需要做对应的逻辑处理就可以了。


为了防止用户信息不同步的问题,我直接把小程序的用户和公众号的关注用户都存在user表里,简单来说就是,用户通过UnionID来区分,同一个用户关注了公众号且登录了小程序,用户信息就只有一条。用一个字段例如follow来区分用户有没有关注公众号。为1就表示关注,0未关注。

为什么这么做呢,因为这个公众号之前就已经关注了好多人,这些人的回调已经没用了,所以我选择把两边的用户都存起来。

这里有个大坑,用户取消关注公众号之后,你在用openid来查用户详细信息,是不会返回用户的UnionID,只会返回用户在公众号的openId

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值