首页  >  文章  >  后端开发  >  PHP微信开发之同步粉丝

PHP微信开发之同步粉丝

不言
不言原创
2018-04-27 14:53:132131浏览

这篇文章主要介绍了PHP微信开发之同步粉丝 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

首先获取到当前公众号的id

//获取正在使用的公众号
function getCurrentMp(){
	$mp=M('mp')->where('is_use=1')->find();
	return $mp;
}

初始化

private $mp;
	public function _initialize(){
     	$mp=getCurrentMp();
		if(empty($mp)){
			$this->error('无使用的公众号',U('mp/index'));
			exit;
		}else{
			$this->mp=$mp;
		}
     }


获取access_token的方法

function getAccess_token(){
	$mp=M('mp')->where('is_use=1')->find();
	if(empty($mp)) return false;
	$id=$mp['id'];//正在使用的公众号的主键

	if(empty($mp[&#39;access_token&#39;]) || $mp[&#39;expire_time&#39;]<time()){
		$appid=$mp[&#39;appid&#39;];
		$appsecret=$mp[&#39;appsecret&#39;];
		$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

		include APP_PATH.&#39;LaneWeChat/lanewechat.php&#39;;
		$arr= \LaneWeChat\Core\Curl::callWebServer($url,&#39;&#39;,&#39;GET&#39;);
		//将获取到的access_token存入数据库
		if(isset($arr[&#39;access_token&#39;])){
			$data[&#39;access_token&#39;]=$arr[&#39;access_token&#39;];
			$data[&#39;expire_time&#39;]=$arr[&#39;expires_in&#39;] + time()-200;

			M(&#39;mp&#39;)->where("id=$id")->save($data);
			return $arr[&#39;access_token&#39;];
		}else{
			return false;
		}
	}else{
		return $mp[&#39;access_token&#39;];
	}
}

调用封装好的框架

 public static function getFansList($next_openid=&#39;&#39;){
        //获取ACCESS_TOKEN
        $accessToken = getAccess_token();
        if(empty($next_openid)){
            $queryUrl = &#39;https://api.weixin.qq.com/cgi-bin/user/get?access_token=&#39;.$accessToken;
        }else{
            $queryUrl = &#39;https://api.weixin.qq.com/cgi-bin/user/get?access_token=&#39;.$accessToken.&#39;&next_openid=&#39;.$next_openid;
        }
        return Curl::callWebServer($queryUrl, &#39;&#39;, &#39;GET&#39;);
    }
//批量获取基本信息
    public function getManyUserInfo($openids){
         $accessToken = getAccess_token();
         $queryUrl = &#39;https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=&#39;.$accessToken;
         $json=json_encode(array(&#39;user_list&#39;=>$openids));
        return Curl::callWebServer($queryUrl, $json, &#39;POST&#39;);
    }

做好准备工作后,开始同步

 public function downFans(){
     	$mp=$this->mp;
          $mp_id = $mp[&#39;id&#39;];
     	
     	include APP_PATH.&#39;LaneWeChat/lanewechat.php&#39;;
     	$ret=UserManage::getFansList();
     	// print_r($ret);
     	$openids=$ret[&#39;data&#39;][&#39;openid&#39;];
     	// print_r($openids);
     	$arr=array();
     	foreach ($openids as $value) {
     		$row=array();
     		$row[&#39;openid&#39;]=$value;
     		$row[&#39;lang&#39;]="zh_CN";
     		$arr[]=$row;
     	}
     	// print_r($arr);
     	// exit;
     	$ret=UserManage::getManyUserInfo($arr);
     	// print_r($ret);
     	// exit;
     	if(isset($ret[&#39;user_info_list&#39;])){
     		$data=$ret[&#39;user_info_list&#39;];
     		// print_r($data);
     	 //    exit;
               $mp=$this->mp;
               // $data[&#39;mp_id&#39;]= $mp_id;
           	$fan=M(&#39;mp_friends&#39;);
     	     $fan->where("mp_id={$mp[&#39;id&#39;]}")->delete();
     	     foreach ($data as &$value) {
          	    	
                    $value[&#39;mp_id&#39;]=$mp[&#39;id&#39;];
                    $value[&#39;tagid_list&#39;]=implode(&#39;,&#39;, $value[&#39;tagid_list&#39;]);
                    
     	     }
               $fan->addAll($data);
               
           	
     	}
         $this->success(&#39;同步完成&#39;,U(&#39;index&#39;));


     }

相关推荐:

PHP微信开发之模板消息回复

以上是PHP微信开发之同步粉丝 的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn