当前位置:   article > 正文

微信中同步粉丝_java 同步公众号粉丝

java 同步公众号粉丝

       在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)。公众号可通过本接口来根据OpenID获取用户基本信息。

一,获取用户基本信息:开发者可通过OpenID来获取

  1. http请求方式: GET
  2. https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

二,批量获取用户基本信息

  1. http请求方式: POST
  2. https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN

在同步粉丝之前,需查看正在使用的公众号。代码如下:

  1. private $mp;
  2. public function _initialize(){
  3. $mp=getCurrentMp();
  4. if(empty($mp)){
  5. $this->error('无使用的公众号',U('mp/index'));
  6. exit;
  7. }else{
  8. $this->mp=$mp;
  9. }
  10. }

同步粉丝时,需获取粉丝的所有信息,包括昵称,头像等,代码如下:

  1. public function sycFans(){
  2. $mp=$this->mp;
  3. include APP_PATH.'LaneWeChat/lanewechat.php';
  4. $ret=UserManage::getFansList();//取出所有信息
  5. // print_r($ret);
  6. // exit;
  7. $openids=$ret['data']['openid'];//取得openid
  8. // print_r($openids);
  9. $arr=array();
  10. foreach ($openids as $value) {
  11. $row=array();
  12. $row['openid']=$value;
  13. // print_r($row['openid']);
  14. // exit;
  15. $row['lang']="zh_CN";
  16. $arr[]=$row;
  17. }
  18. // print_r($arr);
  19. $ret=UserManage::getManyUserInfo($arr);
  20. // print_r($ret);
  21. // $data=$ret['user_info_list'];
  22. // print_r($data);
  23. if(isset($ret['user_info_list'])){
  24. $data=$ret['user_info_list'];
  25. // print_r($data);
  26. $fans=M('mp_friends');
  27. $fans->where("mp_id={$mp['id']}")->delete();
  28. foreach ($data as &$value) {
  29. $value['mp_id']=$mp['id'];
  30. // $value['mp_id']=$mp['id'];
  31. $value['tagid_list']=implode(',',$value['tagid_list']);
  32. }
  33. $fans->addAll($data);
  34. }
  35. $this->success('同步完成',U('index'));
  36. }

首先使用UserManage来取出所有信息,然后再取得openid,因为时二维数组,所以需要遍历数组,并获取标签,最后同步完成。

当获取的所有信息中头像不显示时,可编写如下代码:

  1. //显示图片
  2. public function showMpImg($url){
  3. header('content-type:image/jpeg');
  4. echo file_get_contents($url);
  5. }
显示之后,可根据标签分组并显示,代码如下:
  1. public function index($tagid=''){
  2. $mp=$this->mp;
  3. $where['mp_id']=$mp['id'];
  4. if(!empty($tagid)){
  5. $where['tagid_list']=array('like',"%{$tagid}%");
  6. }
  7. $data=M('mp_friends')->where($where)->field('id,headimgurl,nickname,subscribe_time,openid,tagid_list')->order()->select();
  8. $tag=M('tags')->where($where)->select();
  9. $this->assign('tag',$tag);
  10. $this->assign('friendList',$data);
  11. $this->display();
  12. }

同步完成,显示出来,根据标签也可完成显示。


本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号