>  기사  >  백엔드 개발  >  PHP WeChat 개발 동기화 팬

PHP WeChat 개발 동기화 팬

不言
不言원래의
2018-04-27 14:53:132131검색

이 글은 주로 PHP WeChat 개발에서 팬의 동기화를 소개합니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들은 이를 참조할 수 있습니다.

먼저 현재 공개 계정의 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 WeChat 개발 템플릿 메시지 답장

위 내용은 PHP WeChat 개발 동기화 팬의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.