1. 程式人生 > >微信批量獲取關注者資訊列表php版本

微信批量獲取關注者資訊列表php版本

最近在研究微信介面開發,由於工作需要,需要開發出公眾號對應的關注者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."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$val['openid']."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$val['nickname']."<br/>";
}
}

 5 最終結果如下圖: