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 相关文章推荐
PHP - Html Transfer Code
Oct 09 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
php 文件上传类代码
Aug 06 PHP
解析php常用image图像函数集
Jun 24 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
php备份数据库类分享
Apr 14 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 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创建多级目录的两种方法
2016/10/28 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
jquery等待效果示例
2014/05/01 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
pytorch 预训练层的使用方法
2019/08/20 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Keras 使用 Lambda层详解
2020/06/10 Python
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
仙境之桥观后感
2015/06/16 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python