如何检查微信用户是否关注了公众号
在基于微信公众号的开发中,经常遇到的一个问题就是,需要检查一个微信账号,是否关注了公众号号(因为之后的获取用户基本信息、发送消息等,都必须基于已关注的前提)。
一般的操作流程是:
在页面基类或入口类中,追加检查,即用公众号的网页授权接口(snsapi_base形式)获取微信账号的 openid,然后基于 openid 获取用户的基本信息。
- 已关注的用户,将获取到用户的所有基本信息,包括头像、昵称、地址等。
- 未关注的用户,至少可以获取到用户是否关注(对应字段 subscribe,0 未关注,1 已关注),至此,我们可以添加引导用户去关注公众号的逻辑处理。
实际操作过程中,发现一个问题:使用微信测试号的时候,如果调用网页授权接口,微信直接弹窗报错,提示必须关注公众号;使用已认证的服务号调用时,不会报错,并且可以正常获取到用户的 openid,之后根据 openid 获取用户是否关注的处理都可以正常使用。这是什么情况呢?!! wtf...
> 经过多方查找资料及测试,终于了解到这样一种情况: > >已认证的服务号,不管用户是否关注,在调用网页授权接口(snsapi_base形式)时,都能获取到用户的 openid,而测试号不行,会直接报错!