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 mssql 数据库分页SQL语句
Dec 16 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
推荐信模板
2014/05/09 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
用Python写一个简易版弹球游戏
2021/04/13 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫