网页中要获取微信用户是否关注订阅号,请保证在同一个微信开放平台帐号下有一个服务号,否则可能很难实现。
在平时的业务工程中我们需要了解用户是否关注了微信公众号才能继续往下操作。这种操作对服务号来说是很容易的,具体可以参考微信开发文档>微信网页开发>网页授权
但是订阅号是没有这个功能的,也就是无法通过这个机制知道微信用户是否关注,本文就是要解决这个问题。
在微信开发文档>用户管理>获取用户基本信息(UnionID机制)>UnionID机制说明中有提到:
开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
首先我们要知道的是openID结合access_token是可以转换为unionid。所以根据如上的描述,或许可以启发我们利用同一个微信开放平台帐号下的服务号来辅助我们完成判断用户是否关注订阅号的业务逻辑。具体做法如下:
1.保证数据库中实时保存所有订阅号已关注用户的unionid,要完成这一点,你需要做到两点:初始化时在数据库中插入所有已关注用户的unionid,每当有用户关注的时候将其unionid插入数据库;这两点并不难做到;前一点,关于获取所有已关注用户的unionid,你可以参考我的这一篇文章:批量获取微信公众号用户openID及用户信息
2.通过上面网页授权中提到的code机制,我们可以利用同一个微信开放平台帐号下的服务号去获取当前微信用户的unionid,将其与数据库中的进行比对即可得出当前用户是否关注了订阅号。