最近在研究微信接口开发,由于工作需要,需要开发出公众号对应的关注者openid、昵称等信息,在网上搜了一下没发现类似文章,故微信好友列表获取将自己开发的列出来,供大家参考。
基本流程是:1 获取关注者的openid列表 ----》2再批量获取opendid、昵称等信息。
特列出具体代码:
1 定义两个类:
class obj_openid ///定义openid对象
{
public $openid="";
public $lang="";
}
class obj_wxuser ///定义微信用户
{
public $openid="";
public $nickname="";
}
2 批量获取关注者openid
public static function getUserList( $next_id = '' ){
$access_token = self::getToken();
$extend = '';
if( !empty($next_id) ){
$extend = "&next_openid=$next_id";
}
$url = self::API_URL . "/cgi-bin/user/get?access_token={$access_token}$extend";
$ret = json_decode(
curl_get( $url ),
true
);
return self::getResult( $ret )
? array(
'total' => $ret['total'],
'list' => $ret['data']['openid'],
'next_id' => isset( $ret['next_openid'] ) ? $ret['next_openid'] : null
)
: null;
}
3 批量获取关注者信息,包括openid、nickname等,本例只是获取这两项
public static function batGetUserinfo(){
$access_token = self::getToken();
$url = self::API_URL . "/cgi-bin/user/info/batchget?access_token={$access_token}";
$list_openid=self::getUserList();
$count=count($list_openid["list"]);
$i=0;
$ret="{\"uils\":[";
$arr_openid=array();
$arr_wxuser=array();
foreach ($list_openid["list"] as $value)
{
$i++;
$obj=new obj_openid();
$obj->openid=$value;
$obj->lang="zh-CN";
array_push($arr_openid,$obj);
if($i%100==0) //因为微信官方只支持一次最多获取100个人的信息,故需多次提交
{
$str_post="{\"user_list\":".json_encode($arr_openid)."}";
$ret= $ret.curl_post( $url, $str_post).",";
$arr_openid=array();
}
}
if(count($arr_openid)>0)
{
$str_post="{\"user_list\":".json_encode($arr_openid)."}";
$ret =$ret.curl_post( $url, $str_post)."]}";
}
else
{
$ret =$ret."]}";
}
$ret =json_decode($ret, true );
return self::getResult( $ret ) ? $ret : null;
}
4 调用上述方法获得列表:
$ret = weixin::batGetUserinfo();
$count=count($ret["uils"]);
$j=0;
//echo $count;
for($i=0;$i<$count;$i++)
{
foreach($ret["uils"][$i]["user_info_list"] as $val)
{
//我这里只获取了openid、nickname两项,如需获取更多请参考微信具体接口文档
$j++;
echo $j." ".$val['openid']." ".$val['nickname']."
";
}
}
5 最终结果如下图:微信好友提取软件