PHP用户管理中常用接口调用实例及解析(含源码)


Posted in PHP onMarch 09, 2017

掌握用户的第一步就是将已经关注的粉丝信息保存起来,这个时候就用到获取用户列表接口。公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

一、 获取微信关注用户列表接口调用实例

接口说明

http请求方式:GET

接口调用地址:

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID

请求参数说明,如表所示:

参数 是否必须 说明
access_token 调用接口凭证
next_openid 第一个拉取的OPENID,不填默认从头开始拉取

返回说明:

正常情况下,微信会返回JSON数据包给公众号,如下所示:

{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}

返回信息参数说明,如表所示:

 

参数 说明
total 关注该公众账号的总用户数
count 拉取的OPENID个数,最大值为10000
data 列表数据,OPENID的列表
next_openid 拉取列表的最后一个用户的OPENID

使用程序调用接口获取,代码:

<?php
/*
 *获取微信关注用户列表OpenID
*/
require('wei_function.php');
$appid="wx78478e595939c538";
$secret="5540e8ccab4f71dfad752f73cfb85780";
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret."";
$output=getdata($url);
$tokenarr=(array)json_decode($output);
$token=$tokenarr['access_token'];
//获取关注用户列表接口
$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."";
//通过getdata进行接口调用
$userarr=(array)json_decode(getdata($userurl));
//将返回信息进行处理并输出
$useropenidarr=(array)$userarr['data'];
print_r($useropenidarr);
?>

代码解析

require('wei_function.php');包含wei_function.php,该函数文件可以购买《微信公众平台开发实例教程》,在该书中第95页有详细讲解。 

与微信公众平台开发3-微信服务器IP接口实例(含源码)的获取微信服务器IP一样,获取到access_token后,替换

$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."";

中的access_token参数,并通过getdata()函数获取返回的信息,处理后,进行打印,如图所示。

 PHP用户管理中常用接口调用实例及解析(含源码)

如果关注用户大于10000,需多次调用,只需在接口后增加&next_openid=NEXT_OPENID的参数,NEXT_OPENID会在前一次调用时返回该值,如:

$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."&next_openid=NEXT_OPENID";

二、用户基本信息接口(UnionID机制)调用实例

在通过获取关注用户列表接口获取到用户的OpenID后,可通过该参数并调用获取用户基本信息(UnionID机制)接口获取用户的基本信息,如:昵称、城市、性别、用户头像、是否关注公众号等信息,为了更好的了解用户,需要将这些信息一同保存到数据库中。

接口说明

http请求方式:GET

接口调用地址:

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

请求参数说明,如表所示:

参数 是否必须 说明
access_token 调用接口凭证
openid 普通用户的标识,对当前公众号唯一
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明:

正常情况下,微信会返回JSON数据包给公众号,如下所示:

{
  "subscribe": 1,
  "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
  "nickname": "Band",
  "sex": 1,
  "language": "zh_CN",
  "city": "广州",
  "province": "广东",
  "country": "中国",
  "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4
eMsv84eavHiaiceqxibJxCfHe/0",
 "subscribe_time": 1382694957,
 "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
 "remark": "",
 "groupid": 0,
 "tagid_list":[128,2]
}

返回信息参数说明,如表所示:

参数 说明
subscribe 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
openid 用户的标识,对当前公众号唯一
nickname 用户的昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
city 用户所在城市
country 用户所在国家
province 用户所在省份
language 用户的语言,简体中文为zh_CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
subscribe_time 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
remark 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
groupid 用户所在的分组ID(兼容旧的用户分组接口)
tagid_list 用户被打上的标签ID列表

使用程序调用接口获取,代码:

<?php
/*
 *获取微信关注用户基本信息
*/
require('wei_function.php');
$appid="wx78478e595939c538";
$secret="5540e8ccab4f71dfad752f73cfb85780";
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret."";
$output=getdata($url);
$tokenarr=(array)json_decode($output);
$token=$tokenarr['access_token'];
//获取关注用户列表接口
$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."";
//通过getdata进行接口调用
$userarr=(array)json_decode(getdata($userurl));
//将返回信息进行处理并输出
$useropenidarr=(array)$userarr['data'];
foreach ($useropenidarr['openid'] as $value) {
  //循环获取用户基本信息
  $infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN";
  $infoarr=(array)json_decode(getdata($infourl));
  print_r($infoarr);
  echo "<br />";
}
?>

代码解析

require('wei_function.php');包含wei_function.php,该函数文件可以购买《微信公众平台开发实例教程》,在该书中第95页有详细讲解。

获取到用户OpenID列表后,根据每条OpenID获取用户基本信息,这里用到foreach循环

foreach ($useropenidarr['openid'] as $value) {
    //循环获取用户基本信息
   $infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN";
    $infoarr=(array)json_decode(getdata($infourl));
    print_r($infoarr);
    echo "<br />";
}

运行结果如图所示。

PHP用户管理中常用接口调用实例及解析(含源码)

如果需要将用户信息保存到数据库,只需替换print_r($infoarr);为增加数据库的代码即可,如:

foreach ($useropenidarr['openid'] as $value) {
  //循环获取用户基本信息
  $infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN";
  $infoarr=(array)json_decode(getdata($infourl));
  //将用户信息增加到数据库
 $sql=”insert into userinfo(`nickname`,`sex`,`city`) values
 (‘”.$infoarr[‘nickname'].”','”.$infoarr['sex'].”','”.$infoarr['city'].”')”;
  mysql_query($sql);
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
php在线打包程序源码
Jul 27 PHP
php 破解防盗链图片函数
Dec 09 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
php截取中文字符串函数实例
Feb 23 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
php利用gd库为图片添加水印
Nov 09 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
PHP工厂模式的日常使用
Mar 20 PHP
PHP 图片处理
Sep 16 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 #PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 #PHP
php封装json通信接口详解及实例
Mar 07 #PHP
PHP获取真实客户端的真实IP
Mar 07 #PHP
php实现简单加入购物车功能
Mar 07 #PHP
mac os快速切换多个PHP版本的方法
Mar 07 #PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 #PHP
You might like
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
用jscript启动sqlserver
2007/06/21 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
基于python的字节编译详解
2017/09/20 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
python中cPickle类使用方法详解
2018/08/27 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python画图高斯分布的示例
2019/07/10 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
Java面向对象面试题
2016/12/26 面试题
机关门卫制度
2014/02/01 职场文书
暑期社会实践方案
2014/02/05 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
年终晚会活动方案
2014/08/21 职场文书
行政经理岗位职责
2015/04/15 职场文书
《假如》教学反思
2016/02/17 职场文书
八年级物理教学反思
2016/02/19 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android