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 相关文章推荐
别人整理的服务器变量:$_SERVER
Oct 20 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
phpStorm2020 注册码
Sep 17 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下几种删除目录的方法总结
2007/08/19 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery实现商品活动倒计时
2015/10/16 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
如何验证python安装成功
2020/07/06 Python
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
自我评价的范文
2014/02/02 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
学雷锋标语
2014/06/25 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
工作会议简报
2015/07/20 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript
nginx配置指令之server_name的具体使用
2022/08/14 Servers