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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
PHP用户指南-cookies部分
Oct 09 PHP
第十二节--类的自动加载
Nov 16 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP实现登录验证码校验功能
May 17 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
django框架如何集成celery进行开发
2017/05/24 Python
python实现excel读写数据
2021/03/02 Python
解读python logging模块的使用方法
2018/04/17 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
python+os根据文件名自动生成文本
2019/03/21 Python
python 求10个数的平均数实例
2019/12/16 Python
类的返射机制中的包及核心类
2016/09/12 面试题
偷看我的初中毕业鉴定
2014/01/29 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
金融保险专业求职信
2014/09/03 职场文书
毕业典礼致辞
2015/07/29 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
nginx设置资源请求目录的方式详解
2022/05/30 Servers
windows系统安装配置nginx环境
2022/06/28 Servers