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桌面中心(四) 数据显示
Mar 11 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php定时执行任务设置详解
Feb 06 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
不使用 JS 匿名函数理由
2017/11/17 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python中的默认参数实例分析
2018/01/29 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
法学专业个人求职信
2013/09/26 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
滴水洞导游词
2015/02/10 职场文书
卫生主题班会
2015/08/14 职场文书
超市主管竞聘书
2015/09/15 职场文书