微信公众号--获取用户列表

浏览:7475 发布日期:2016/12/26 分类:功能实现 关键字: 微信公众号 获取用户列表
之前其实写过一次微信号的简单开发,包括菜单自动回复拉取用户信息等简单的微信公众号的开发,今天又用到了,然后发现自己还是忘记了,看来记录下来是真的有必要的。我今天主要是写了拉取用户信息,所以我这比写的也就是拉取用户信息。

这里使用的还是TP的框架写的PHP代码进行开发的。
1.对使用的公众号进行基本配置



代码:

//微信验证
public function checkWechat(){
// $weixin=M("maiclub_weixin");
// $res=$weixin->select();
// foreach($res as $value){
// $token=$value["token"];
// }
define("TOKEN",'erdangjia');
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}
$echoStr = $_GET["echostr"];
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );


if( $tmpStr == $signature ){
echo $echoStr;
responseMsgs();
return true;
}else{
return false;
}


}


这里主要注意token一样还有就是地址就可以


2.获取token


代码:

/****
获取Token
*****/
function getWeChatToken() {
// $token = S('access_token');
// $weixin=M("maiclub_weixin");
// $data=$weixin->select();
// foreach($data as $value){
// $appid=$value["appid"];
// $appsecret=$value['appsecret'];
//}
$appid="";
$appsecret=" ";
if (empty($token)) {
$res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret);
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
// 不能频繁的访问https://api.weixin.qq.com/cgi-bin/token,每日有次数限制
// 通过此接口返回的token的有效期目前为2小时。令牌失效后,JS-SDK也就不能用了。
// 因此,这里将token值缓存1小时,比2小时小。缓存失效后,再从接口获取新的token,这样
// 就可以避免token失效。
// S()是ThinkPhp的缓存函数,如果使用的是不ThinkPhp框架,可以使用你的缓存函数,或使用数据库来保存。
S('access_token', $token, 3000);
}
return $token;
}

这里要填写的appid和AppSecret 直接从公众平台的基本配置中复制出来就可以,关键我这边是已经写死了,事实上可以从数据库中调取,我只是为了自己尝试的时候方便所以才这么写的。

还有一点,我将这一段代码写到了 这边。我最开始第一次的时候是写到了config当中,然而写在这个里面比较的不合适,后来就改到了function当中。

这边设置好之后可以再控制器中

public function getWeixinToken(){
echo getWeChatToken();die();
}

利用这两行代码打印测试一下是不是可以大英出token 要是可以的话就是成功获取token。

3.拉取用户列表

1)拉取用户信息首先要获取用户的openid



代码:

//获取用户openid
function getOpenid(){
define("ACCESS_TOKEN",getWeChatToken());
$url="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".ACCESS_TOKEN;
$res = https_request($url);
$data = json_decode($res,true);
$openid = $data['data']['openid'];


return $openid;
}

这段代码我依旧是作为方法写在了function当中的。

2)获取用户列表


代码:

//获取用户列表
public function getuserLists(){
if(checkLogin()){
$assignArr = array(
"leftWxManager" => 1,//是否选中
"leftgetuserLists" => 1,//基本信息是否选中
);
$role=I('session.role');
if($role != 0){
echo"<script>alert('您没有权限')</script>";
echo "<script>location.href= '../Index/index'</script>";
}else{
// dump(getOpenid());die();
$userModel=M('maiclub_user');
define("ACCESS_TOKEN",getWeChatToken());
foreach (getOpenid() as $val){
if($userModel->where("openid = '{$val}'")->find()){
//echo 1111;
}else{
$urlInfo="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".ACCESS_TOKEN."&openid=".$val."&lang=zh_CN";

$resInfo = https_request($urlInfo,true);
$userLists=json_decode($resInfo,true);
$userModel->add($userLists);
//dump($userLists);
}
}
//die();
$records=I('cookie.records');
$search=I('post.search');
if($records == ''){
$records =10;
}
if($search==''){
$count = $userModel->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,$records);// 实例化分页类 传入总记录数和每页显示的记录数(10)
$show = $Page->show();// 分页显示输出
$userModel->create();
$data3=$userModel->limit($Page->firstRow.','.$Page->listRows)->select();
}else{
$data3=$userModel->where("nickname like '%{$search}%' || city like '%{$search}%' || province like '%{$search}%' || openid like '%{$search}%'")->select();


}




$this->assign('userWx',$data3);
$this->assign('num',$Page->listRows);
$this->assign('count',$count);
$this->assign('page',$show);// 赋值分页输出
$this->assign($assignArr);
$this->display();
}
}


}

这里就是获取用户列表同时还有个入库的过程,数据库中字段只要写了就可以成功入库,如果想要知道他具体能获取到哪些字段,字段分别是什么意思,一个可以打印代码中的$userLists(必须没有入库之前打印,也就是说,如果你入库一次了,第二次刷新打印只会有新关注的人,如果这段时间没有新的关注这里就会显示NULL),或者直接在微信公众平台的开发者手册中


这个里面也详细的写了每个字段的意思和有哪些字段。


以上应该就是拉取公众号关注的用户的全部内容。


更多源码,请访问 http://www.erdangjiade.com/source


网页特效下载:http://www.erdangjiade.com/js


更多PHP/MySQL功能:http://www.erdangjiade.com/php


更多原创模板,尽在 http://www.erdangjiade.com/templates
评论( 相关
后面还有条评论,点击查看>>