微信公众号分为服务号和订阅号廣告它们的接口权限各不相同;服务号可以通过网页授权接口,用户授权后获取用户的openid通过用户的openid获取用户的信息,用户的信息里包含用户对公众号的关注字段但是,订阅号广告没有相应的网页授权接口权限无法从通过相应的接口来获取openid(注意:可通过微信用户和公众号之间的交互事件获取openid)。
2、解决方法(借助微信开放平台):
- 将订阅号广告和服务号(具有网页授权接口权限)绑定到同一微信开放平台下(同一用户通过不同openid获取统一的unionid)
- 获取订阅号广告所有已关注用户的openid通过openid获取他们unionid,保存到数据库
- 通过服务号授权后获取用户嘚服务号的openid再获取unionid,查询数据库判断unionid是否已经存在存在则已关注订阅号广告,反之没关注
- 此外需要监听微信用户对订阅号广告的关紸、取消关注事件,相应的增加和删除数据库中的openid和unionid