php微信公众平台开发之获取用户基本信息


Posted in PHP onAugust 17, 2015

本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。

把微信和第三方网站结合起来运行,是许多客户经常要的方案。这里简要介绍一下获取微信用户的基本信息,并在第三方网站直接登录。

当微信公户关注一个公众号时,会产生一个独一无二的OpenID,此时我们就需要用到它去请求微信服务器获取用户的基本信息,包括头像,昵称等。

更加详细的说明请参考 微信开发文档 。

获取的步骤如下:

1 第一步:用户同意授权,获取code
2 第二步:通过code换取网页授权access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
5 附:检验授权凭证(access_token)是否有效

一、在微信公众平台 —— 开发者中心 : 网页授权获取用户基本信息 :点击 “修改”,配置网页回调域名

php微信公众平台开发之获取用户基本信息

二、用户授权获取code

必备资源:

$appid = ‘*****************';
$appsecret = ‘*************************';

注:redirect_url是授权后重定向的回调链接地址,请使用urlencode对链接进行处理。

在网站入口处加上配置的  $url = ‘https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=http%3A%2F%2Fjixian.c.zmit.cn%2F&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect';

并请求访问上诉 url 。

当用户授权后,回调设置的域名,并会在url参数中拼接我们所需要的code,我们直接用 $_GET[‘code'] 获取即可!

三、通过code获取网页授权access_token和openid

$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode(file_get_contents($token_url));
$opendid= $token->openid;
$access_token = $token->access_token;

四、获取用户信息

$info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$opendid.'⟨=zh_CN';
$info = json_decode(file_get_contents($info_url));
$data['name'] = $info->nickname;
$data['image'] = $info->headimgurl;
print_r($info);

五、当获取到用户的openid等信息后,我们就可以将其存入数据库,只要有openid了,就相当于微信用户已经登录该网站!

使用AppID和AppSecret获取的access_token,通过全局Access Token获取用户基本信息

1. 用户关注以及回复消息的时候,均可以获得用户的OpenID

<xml>
 <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName>
 <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName>
 <CreateTime>1372307736</CreateTime>
 <MsgType><![CDATA[event]]></MsgType>
 <Event><![CDATA[subscribe]]></Event>
 <EventKey><![CDATA[]]></EventKey>
</xml>

其中的FromUserName就是OpenID

2. 然后使用access_token接口,请求获得全局Access Token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
返回结果:

{
 "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ",
 "expires_in": 7200
}

3. 再使用全局ACCESS_TOKEN获取OpenID的详细信息

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
返回如下:

{
    "subscribe": 1,
    "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
    "nickname": "刺猬宝宝",
    "sex": 1,
    "language": "zh_CN",
    "city": "深圳",
    "province": "广东",
    "country": "中国",
    "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0",
    "subscribe_time": 1386160805
}

至此,获得用户的基本信息。

这种方式最适合用户在关注的时候,回复一条欢迎关注+用户昵称的信息,如关注下面公众账号时的回复所示。扫描二维码可体验。

 php微信公众平台开发之获取用户基本信息

php微信公众平台开发之获取用户基本信息

php微信公众平台开发之获取用户基本信息

以上就是本文针对php微信公众平台开发之获取用户基本信息的全部内容,希望大家喜欢。

PHP 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP实现图片压缩
Sep 09 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 #PHP
php中switch语句用法详解
Aug 17 #PHP
Linux系统下PHP-FPM的安装和配置教程
Aug 17 #PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 #PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 #PHP
提高php编程效率技巧
Aug 13 #PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 #PHP
You might like
php下通过POST还是GET来传值
2008/06/05 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
Python 调用Java实例详解
2017/06/02 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python实现串口通信的示例代码
2020/02/10 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
求职自荐书范文
2013/12/04 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
护士个人自我鉴定
2014/03/24 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
离婚协议书范本2014
2014/10/27 职场文书
房产分割协议书范文
2014/11/21 职场文书
美术教师个人总结
2015/02/06 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
赡养老人协议书范本
2015/08/06 职场文书
初二数学教学反思
2016/02/17 职场文书