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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
PHP 文件上传全攻略
Apr 28 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
php使用正则验证中文
Apr 06 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
PHP 类与构造函数解析
Feb 06 PHP
使用PHP json_decode可能遇到的坑与解决方法
Aug 03 PHP
PHP实现验证码校验功能
Nov 16 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
php输出形式实例整理
May 05 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/10/25 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
php-msf源码详解
2017/12/25 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
大众服装店创业计划书范文
2014/01/01 职场文书
节约用水标语
2014/06/11 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
幸福终点站观后感
2015/06/04 职场文书
初婚初育证明范本
2015/06/18 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang