之前的一篇文章,小沃写了关于如何通过微信公共号发送订阅消息的方法,但是这个方法的前提条件是获得了用户的openid。
小沃今天给大家讲讲如何仅仅通过微信公共号就能得到所有用户的openid。有很多时候,我们的服务号也仅仅是用于推广的。因此很多消息希望发送给所有的客户,获取所有关注用户的openid是很重要的。
下面,小沃就教一下大家如何实现这个功能。
一、获取access_token
获取方法为通过get方式访问
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
这个方法一天只能调用10000次,每次获得的access_token可以使用2小时,期间access_token可以被反复复用。
二、获取所有用户的用户列表
提取方式也是get
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
其中next_openid是个可选参数,如果不设置这个参数,默认从第一个用户开始拉取。
这个api每次只能获取10000个用户,如果用户数量高于10000,就有必要分开几次拉取了。
另外,这里拉取的数据只有用户的openid,不包含其他数据。
那么一定人会问,如果当前公共号关注的人数高于10000人应该怎么办呢?哈哈,这就是next_openid这个参数的作用了。
在我们使用get方式获取客户的信息后,返回的参数中就带有一个next_openid。意思是,这次您获取的用户列表的后续一个用户是什么。
当我们再次调用这个api时,将之前调用获得的next_openid作为参数送到next_openid,这样返回的就是后续的openid了。
好,当我们将所有的用户的openid全部获取到了后,我们就可以进行下一步操作了。
三、批量获取用户的详细信息
https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN
这个api的调用方法为post
需要用post提交的方式将openid以json格式发送过去。
json格式如下:
{
"user_list": [
{
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"lang": "zh_CN"
},
{
"openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg",
"lang": "zh_CN"
}
]
}
这个案例写了获取两个用户的详细信息,您可以根据您的需求自行添加。
返回也是一段json值,其json值如下:
{
"user_info_list": [
{
"subscribe": 1,
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"nickname": "iWithery",
"sex": 1,
"language": "zh_CN",
"city": "揭阳",
"province": "广东",
"country": "中国",
"headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0",
"subscribe_time": 1434093047,
"unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4",
"remark": "",
"groupid": 0,
"tagid_list":[128,2]
},
{
"subscribe": 1,
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"nickname": "iWithery",
"sex": 1,
"language": "zh_CN",
"city": "揭阳",
"province": "广东",
"country": "中国",
"headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0",
"subscribe_time": 1434093047,
"unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4",
"remark": "",
"groupid": 0,
"tagid_list":[128,2]
}
]
}
这个案例返回了两个用户,这里实际返回的用户数会根据您的用户openid数量发生变化。
如果有关于微信推送相关的开发需求,可以随时联系小沃哦。