微信开发同步粉丝

   微信开发同步粉丝是一个特别重要的功能,它可以把关注这个微信号的粉丝的一些资料取出来,并存入数据库。但有一点要注意在本地用同步粉丝这个按钮,然后在你的云虚拟主机上在调用同步粉丝这个按钮,会写不进数据库,因为这样会让access_token立刻过期。

这是我同步粉丝前台网页

<extend name="Common:base" />
<block name="body">

<div class="layui-container">  
    <div class="layui-row">
         <div class="layui-col-md9">
            <a href="{:U('addfans')}" id="getAllFriend" class="layui-btn">同步粉丝</a>
        </div>
        <div class="layui-col-md3">
            <form class="layui-form">
            <div class="layui-form-item">
            <select name="tag" lay-filter="tag">
              <option value="">请选择标签</option>
              <volist name="tag" id="row">
              <option value="{$row.tag_id}">{$row.tag}({$row.tag_id})</option>
              </volist>
            </select>
            </div>     
            </form>
        </div>
    </div>
</div>
<table class="layui-table" lay-skin="line">
    <colgroup>
        <col width="150">
        <col width="100">
        <col width="200">
        <col width="200">
        <col>
    </colgroup>
    <thead>
    <tr>
        <th>头像</th>
        <th>昵称</th>
        <th>关注时间</th>
        <th>OPENID</th>
        <th>标签</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <volist name="data" id="v">
    <tr>
        <td>
            <div  style="padding: 5px; border: #e6e6e6 solid 1px; width:35px; float: left; ">
                <img class="form_logo" src="{$v.headimgurl}" width="35" height="35">
            </div>
        </td>
        <td>{$v.nickname}</td>
        <td>{$v.subscribe_time|date="Y-m-d",###}</td>
        <td>{$v.openid}</td>
        <td>{$v.tagid_list}</td>
        <td><a class="rha-bt-a" href="{:U('Message/replyMsg',['openid'=>$v.openid])}">发送消息</a></td>
    </tr>
    </volist>
    </tbody>
</table>


<script>
// layui.use('layer', function(){
//     var $ = layui.jquery, layer = layui.layer;
//     var  lastOpenid='';
//     var page='1';
//     $(function () {
//         $('#getAllFriend').click(function () {
//             layer.open({
//                 type: 2,
//                 title: '同步全部粉丝',
//                 shadeClose: true,
//                 shade: 0.5,
//                 area: ['680px', '200px'],
//                 content: '{:U("mp/Friends/SynFriends")}',
//                 cancel: function(index, layero){
//                     window.location.reload();
//                 }
//             });
//         });
//     })
// });


layui.use('form', function(){
  var form = layui.form;
  
  //各种基于事件的操作,下面会有进一步介绍
 form.on('select(tag)', function(data){
      // console.log(data.elem); //得到select原始DOM对象
      // console.log(data.value); //得到被选中的值
      // console.log(data.othis); //得到美化后的DOM对象
      window.location.href="{:U(index)}"+"?tagid="+data.value;
  });
});

 
   
</script>

</block>

这是我控制器的代码

<?php
namespace Home\Controller;



use Think\Controller;
use LaneWeChat\Core\UserManage;
class FansController extends Controller {
	private $mp;
	
	public function _initialize(){
		$mp=getCurrentMp();
		if(empty($mp)){
			$this->error('无使用公众号',U('index'));
		}else{
			$this->mp=$mp;
		}
	}
		public function index($tagid=''){
		// $data=M('mp_friends')->distinct('openid')->select();

		// $this->assign('data',$data);
		// $this->display();
		$mp=$this->mp;
		$where['mp_id']=$mp['id'];
		if(!empty($tagid)){
			$where['tagid_list']=array('like',"%{$tagid}%");
		}
		$data=M('mp_friends')->where($where)->select();
		$tag=M('tags')->where($where)->select();
		$this->assign('tag',$tag);
		$this->assign('data',$data);
		
		$this->display('index');

		}
		public function addfans(){
		$mp = $this->mp;
		$where['mp_id'] = $mp['id'];
		M('mp_friends')->where($where)->delete();

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

	
		}

}

注意我后台代码有tag的字眼,是我在创建二维码的时候,写入一些数据,这些暂时可以不用管,可以把这些删了,在稍微改造一下就可以用。我这个代码是批量获取粉丝。所以要处理一下数据。

下面代码是我在后台调用的一些方法

public static function getManyUserInfo($openid){
         $accessToken = getAccess_token();
         $queryUrl="https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=$accessToken";
         $json=json_encode(array('user_list'=>$openid));
         // return $json;
         return CUrl::callWebServer($queryUrl,$json,'post');
    }

    /**
     * @descrpition 获取关注者列表
     * @param $next_openid 第一个拉取的OPENID,不填默认从头开始拉取
     * @return JSON {"total":2,"count":2,"data":{"openid":["OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
     */
    public static function getFansList($next_openid=''){
        //获取ACCESS_TOKEN
        $accessToken = getAccess_token();
        if(empty($next_openid)){
            $queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='.$accessToken;
        }else{
            $queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='.$accessToken.'&next_openid='.$next_openid;
        }
        return Curl::callWebServer($queryUrl, '', 'GET');
    }


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值