免费刷金币,请点击这里
TE社区 > 前端技术
客服QQ:1206116161

微信公众号-获取用户信息(网页授权获取)实现步骤

甘做傲娇受. 于 2018-01-31 08:00:52 创建话题
(41)
(0)
举报

根据微信公众号开发官方文档:

获取用户信息步骤如下:

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

1 获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问

其中:

AppID - 公众号的唯一标识
REDIRECT_URI - 跳转url
SCOPE - 值为snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid) 或snsapi_userinfo (弹 出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
STATE - 开发者可以自定义填写a-zA-Z0-9的参数值

2 通过code换取网页授权access_token

如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
state就是上面的STATE参数原样传过来的

实现代码:

<code class="hljs php">$code = I('get.code');
if (empty($code)) {
   //todo 非微信访问
   exit('</code>');
 }else{ //授权后操作 }

在这里我们就可以得到code用作后续的获取access_token。

获取code后,请求以下链接获取access_token:

 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid - 公众号的唯一标识
secret - 密钥
code - 上述所返回的code
grant_type - 值为authorization_code

实现代码:

<code class="hljs bash">$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret');
$str = file_get_contents($url);
$str = json_decode($str, true);
$access_token = $str['access_token'];</code>

这里access_token可以做缓存处理,避免造成频繁获取
实现代码,以TP框架为例:

<code class="hljs php">$access_token = S('access_token');
if (empty($access_token)) {
  $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret');
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str['access_token'];
  S('access_token', $access_token, 3600);
}</code>

在获取access_token后,也会一并返回openid(用户唯一标识),微信官方文档的解释是:用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID

openid是唯一标识微信用户的,如果用户不是第一次登陆,可以在得到openid后查询数据库是否有绑定此openid的用户,之后就无需重新获取用户数据,直接获取的数据库user_id设置session,直接登陆访问

3 第三步忽略,只在需要的时间重新获取access_token而已

4 拉取用户信息(需scope为 snsapi_userinfo)

在数据库无此微信号用户的绑定下,就相当于用户首次访问登陆,则通过第四步来获取用户信息(在用户授权情况下,网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了),然后后台创建user并绑定此微

信用户(通过openid)

请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

access_token - 上述所获取的access_token
openid - 公众号唯一标识

实现代码:

<code class="hljs php">$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
$str = file_get_contents($url);
$str = json_decode($str, true);
if (empty($str['errcode'])) {
  //创建user并绑定openid
}else{
  //错误处理
}</code>

以上就是微信公众号获取用户信息的具体步骤。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

扫码关注TE官方微博 扫码关注TE官方微博
简介Objective-C解析XML与JSON数据格式的方法 计算一个字符串在另一字符串中出现的次数函数 学习Linux的七点忠告 推荐 js和jquery中获取非行间样式 SpringMVC返回json数据的三种方式 javascript实现禁止鼠标滚轮事件 js动态设置select下拉菜单的默认选中项实例 easyui-datagrid特殊字符不能显示的处理方法 非常好的12道shell命令经典面试问题 实例解析JSP中EL表达式的各种运用 jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版 基于JS实现省市联动效果代码分享 js实现一键复制功能 HTML5使用DeviceOrientation实现摇一摇功能 将form表单中的元素转换成对象的方法适用表单提交 JavaWeb实现图形报表折线图的方法 JSP+jquery使用ajax方式调用json的实现方法 Angularjs的Controller间通信机制实例分析 JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析 UI Events 用户界面事件 asp.net后台动态添加JS文件和css文件的引用实现方法 vue嵌套路由与404重定向实现方法分析 实例详解jQuery的无new构建 php使用fsockopen函数发送post,get请求获取网页内容的方法 Android 知乎广告效果实现代码 php数组去重实例及分析 js输出列表实现代码 VUE在for循环里面根据内容值动态的加入class值的方法 对于Python装饰器使用的一些建议 Bootstrap table学习笔记(2) 前后端分页模糊查询 常见浏览器多长时间会提示“脚本运行时间过长”总结 PHP设计模式之解释器模式的深入解析 浅谈json取值(对象和数组) Linux下使用quota命令管理磁盘空间的实例教程 jQuery基于cookie实现换肤功能实例 html5开发三八女王节表白神器 Vue通过URL传参如何控制全局console.log的开关详解 JavaScript中json对象和string对象之间相互转化 标准化——表格 利用 cache 做对比静态页的网页技术 python在每个字符后添加空格的实例 PHP加密解密字符串汇总 ThinkPHP查询返回简单字段数组的方法 浅谈javascript中字符串String与数组Array 通过Javascript创建一个选择文件的对话框代码 Java动态代理实现AOP Kotlin学习第一步 kotlin语法特性 大型JavaScript应用程序架构设计模式 jquery获取复选框checkbox的值的简单实现方法 jquery ajax跨域解决方法(json方式) iOS App引导页开发教程 详解iOS中UIView的layoutSubviews子视图布局方法使用 Python中scatter函数参数及用法详解 利用webstrom调试Vue.js单页面程序的方法教程 在WordPress中加入Google搜索功能的简单步骤讲解 基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用 JavaScript实现开关等效果 UIPageViewController实现的左右滑动界面 Vue DevTools调试工具的使用 $.getJSON在IE下失效的原因分析及解决方法 纯CSS3打造属于自己的“小黄人” jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签 Spring boot中@Conditional和spring boot的自动配置实例详解 Python 常用的安装Module方式汇总 swift控件工厂类的实现代码 IOS设计模式之组合设计模式 在SQL Server中查询资料库的TABLE数量与名称的sql语句 JS复制到剪贴板示例代码 最新关于织梦DEDECMS文章排序方式及调用方法 利用原生JS与jQuery实现数字线性变化的动画 shell监控脚本实例—监控mysql主从复制 Linux系统中sed命令在文件某行前后添加内容的用法 mongodb 常见问题处理方法收集 vue.js-div滚动条隐藏但有滚动效果的实现方法 对python3 urllib包与http包的使用详解 JavaScript格式化日期时间的方法和自定义格式化函数示例 JS延时器提示框的应用实例代码解析 node.js操作mongodb学习小结 sql server关键字详解大全(图文) js实现交换运动效果的方法 腾讯微博提示missing parameter errorcode 102 错误的解决方法 IE6浏览器下resize事件被执行了多次解决方法 javascript 获取特定的 CSS属性值 Python tkinter模块中类继承的三种方式分析 awk中NR和FNR的区别小结和实例演示 JS字符串去除连续或全部重复字符的实例 java多线程开发之通过对战游戏学习CyclicBarrier fckeditor常用Js,获取fckeditor内容,统计fckeditor字数,向fckeditor写入指定代码 杀死Linux中的defunct进程(僵尸进程)的方法指南 Mac OS X 10.10如何批量修改文件名?MAC Finder批量改名方法介绍 vue中使用cropperjs的方法 jQuery插件Timelinr 实现时间轴特效 js离开或刷新页面检测(且兼容FF,IE,Chrome) jQuery实现炫丽的3d旋转星空效果 详解consul的安装和配置 关于PHP开发的9条建议 基于Jquery插件Uploadify实现实时显示进度条上传图片 JavaScript使用concat连接数组的方法 正则基础之 小数点 PHP中安装使用mongodb数据库 如何解决django配置settings时遇到Could not import settings 'conf.local' jQuery总体架构的理解分析 Django1.3添加app提示模块不存在的解决方法 javascript实现很浪漫的气泡冒出特效 JavaScript设计模式学习之“类式继承” ASP.net如何连接SQL SERVER 2012数据库 AngularJS教程之简单应用程序示例 简单实用的反馈表单无刷新提交带验证 Windows系统下多版本pip的共存问题详解 关于为何说JAVA中要慎重使用继承详解 JavaScript实现的贝塞尔曲线算法简单示例 iOS新功能引导提示界面实例详解 jQuery之Deferred对象详解 基于jQuery解决ios10以上版本缩放问题 js实现仿网易点击弹出提示同时背景变暗效果 javascript 判断一个对象为数组的方法 基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转 ETL方法与过程讲解 基于python的汉字转GBK码实现代码 JS实现的简单表单验证功能示例 python刷投票的脚本实现代码 python中使用smtplib和email模块发送邮件实例 Python画图学习入门教程 JavaScript获取一个范围内日期的方法 基于jquery的让页面控件不可用的实现代码 AngularJS中filter的使用实例详解 javascript版2048小游戏 JS实现一键回顶功能示例代码 JS模块与命名空间的介绍 PHP错误提示的关闭方法详解 js+html5实现手机九宫格密码解锁功能 vue 不使用select实现下拉框功能(推荐) angular ng-repeat数组中的数组实例 微信小程序之获取当前位置经纬度以及地图显示详解 解析NodeJs的调试方法 Node.js利用debug模块打印出调试日志的方法 常用jQuery选择器汇总 跨平台Java程序 javascript 二进制运算技巧解析 js使用DOM设置单选按钮、复选框及下拉菜单的方法 jQuery基于事件控制实现点击显示内容下拉效果 jquery实现鼠标拖拽滑动效果来选择数字的方法 ajax 登录功能简单实现(未连接数据库) 使用Angular CLI进行Build(构建)和Serve详解 spring实现jdbctemplate添加事务支持示例 jquery动态改变form属性提交表单 asp+Ajax简单客户登陆验证 求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路 详解python的数字类型变量与其方法 Angular的MVC和作用域 jquery实现具有收缩功能的垂直导航菜单 js 调用百度地图api并在地图上进行打点添加标注 Javascript 遍历页面text控件详解 ES6新增的math,Number方法 js window.open弹出新的网页窗口 帝国CMS后台风格样式修改方法 opencv python 基于KNN的手写体识别的实例 浅谈Iframe网页内部的导航窗口 CSDN 博客的代码高亮问题自己修复 jQuery获取(选中)单选,复选框,下拉框中的值 struts2 spring整合fieldError问题 JS Map 和 List 的简单实现代码 在AspNetCore中使用极验做行为认证的验证流程 .net中webconfig 详解 JsChart组件使用详解 javascript full screen 全屏显示页面元素的方法 浅谈iOS应用中的相关正则及验证 JS实现控制图片显示大小的方法【图片等比例缩放功能】 深入解析nodejs HTTP服务 Javascript基础_简单比较undefined和null 值 jQuery实现加入收藏夹功能(主流浏览器兼职) Powershell小技巧之通过EventLog查看近期电脑开机和关机时间 SqlServer 2000、2005分页存储过程整理第1_3页 仅1个例子轻松学习正则表达式 jquery访问ashx文件示例代码 linux下用csplit命令分割文件的方法示例 Python矩阵常见运算操作实例总结 js 获取范围内的随机数实例代码 Node.js操作Firebird数据库教程 python+pillow绘制矩阵盖尔圆简单实例 python实现简易通讯录修改版 文件上传插件SWFUpload的使用指南 Python基于回溯法子集树模板解决旅行商问题(TSP)实例 centos中tree插件的使用详解与注意事项 JS实现兼容各种浏览器的获取选择文本的方法【测试可用】 JS使用cookie实现只出现一次的广告代码效果 JavaScript使用addEventListener添加事件监听用法实例 强烈推荐-ajax开发者必看的文章第1_3页 jsp页面中树状图怎么实现 Extjs改变树节点的勾选状态点击按钮将复选框去掉 js二级地域选择的实现方法 Bootstrap CSS组件之大屏幕展播 javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随) IPAD和IPHONE的MAC地址怎么查 JavaScript 详解预编译原理 有关Ajax跨域问题的两种解决方法 PHP实现webshell扫描文件木马的方法 ASP.NET MVC4使用MongoDB制作相册管理 PHP编程计算文件或数组中单词出现频率的方法 java转换字符串编码格式的方法
扁平产品设计网页模板.zip Bootstrap绿色后台网站模板.zip 【PHP源码】乘风多用户PHP统计系统 v4.1_cfstat.zip 简易数据库关系映射框架EasyDBO v0.1.0 测试版 砖块背景HTML组合模板.zip jQuery+css随意抓拍图片效果.zip 【PHP源码】冷迪电影小偷自动生成html版 v2.0_ldvod.zip 蓝色大气的公司后台登录页面.zip 出国留学英语培训网站模板.zip jQuery图片曲线循环切换展示代码.zip ssh框架整合Extjs4.0示例, 配合完整系统 CSS3 SVG圆形进度条动画特效.zip gogo旅游问答触屏版自适应手机html5旅游网站模板.zip jQuery手机端微信大转盘抽奖代码.zip jQuery滚动菜单插件Section Menu.zip jquery随机数字抽奖程序代码.zip 紫色儿童教育网站模板.zip spring、springmvc、mybatis、dubbo、zookeeper简单架构分布式系统 HTML5+CSS3后台管理登录模板 基于 struts1.2+hibernate+spring 框架开发的绿色健康购物网 高新科技HTML5模板.zip 3D立体手机触屏图片切换代码.zip js悬浮在右侧橘黄色在线客服.zip Hibernate框架搭建及数据库相关操作 jQuery客户感言展示特效.zip 购物网站HTML全站模板.zip jQuery+CSS3实现紫色导航菜单.zip JS实现图片加载模糊到清晰.zip banner图片切换焦点图.zip jQuery局部滚动切换代码.zip jQuery拖拽插件制作拖拽排序特效.zip jquery+css3垂直手风琴.zip 仿QQ登录界面 房屋租赁html网站模板.zip jQuery鼠标经过冒泡对话框特效.zip jQuery顺序淡入显示元素特效.zip Android 分段饼状图 纯CSS3和SVG实现灯泡发光特效.zip jQuery响应式焦点图.zip ssm开发服装库存CMS后台管理系统 大屏幻灯红色商务网页模板.zip 微信小程序源码-IT-EBOOK 清新蓝色DiscuzX3.0模版.zip 微信小程序源码-订机票 Java 支付宝支付接口 儿童牙科医院网页模板.zip js右下角悬浮提示框.zip webview全屏播放网络视频 jQuery虾米音乐播放器样式代码.zip HTML5+CSS3圆盘秒表动画.zip jQuery移动端酒店入住日期选择代码.zip 棕色大气公司业务网站模板.zip 黄色风格手机APP官网模板.zip 简洁大气的商务公司单页模板.zip 双鱼林jsp成绩管理系统【struts2+hibernate】毕业设计源码 jQuery悬停图片变色放大特效.zip 宠物诊所css模板.zip 漂亮大气的摩托车企业模板.zip jquery圆盘抽奖特效代码.zip jQuery手风琴效果插件j-accordion.zip mysql 优化详解视频教程 浅蓝色清爽公司官网模板.zip CSS3实现兴趣图谱效果.zip 复古机车主题css模板.zip jQuery旅游网站左侧分类菜单代码.zip 高校图书馆个性化推荐系统 微信小程序 - 女性用品商城.zip 磨房旅游户外discuz模板.zip Java模拟QQ聊天室,聊天系统 拳击比赛网站模板.zip wordpress淘客ZZDGM主题.zip 兰博基尼汽车服务网站模板.zip java web+便民租车系统+ssm Java SSM + EasyUI个人博客项目实战 jQuery分页动画效果.zip jQuery浮动弹性菜单效果.zip js图片过渡效果.zip 微信小程序源码-旅游类 js图片数字时钟走动代码.zip jquery密码强度百分比.zip Java 代码性能优化视频教程 jquery输入框增加列表代码.zip 棒球比赛HTML5网页模板.zip 带缩略图选项卡jQuery焦点图.zip jQuery右侧可伸展固定浮动菜单代码.zip Jbpm详解视频教程、实战开发报销系统 jQuery图片灯箱预览效果.zip 微信小程序源码-小游戏-别踩白块 亿级用户下的新浪微博平台架构 带动画效果CSS3手风琴菜单.zip phpwind 9.0绿色模板.zip 基于hibernate spring struts shiro activiti easyui框架的物流系统,可做毕业设计 微信小程序源码-高端城市好天气 【PHP源码】一度笑话小偷程序php版 v1.0_jokext.zip jQuery标签TAB控制图片切换代码.zip 微信小程序源码-仿拉钩App小程序 【ASP.NET源码】诚石网上书店系统 2007 Build 1109_bookshop2007.zip jQuery企业网站多级导航菜单代码.zip 6款html5手机导航菜单特效.zip jQuery滑动导航条.zip spring mvc + hibernate整合项目源码,导入即可直接运行 Twitter Bootstrap表单验证.zip 蓝色自主招生教育网站模板.zip 灰色世界地图网站模板.zip 网易蜂巢容器公有云的Docker实践.pdf jQuery自适应窗口大小背景.zip Spring Cloud Zuul微服务总结及其项目入门实例 JS+CSS3制作3D翻转式幻灯片代码.zip 弹性过渡效果的圆形幻灯片代码.zip jQuery选择中国大学的弹框.zip alimama首页6屏JS图片展示代码.zip spring+springmvc+hibenate完整例子 html5文件上传输入框样式代码.zip 观天下足球直播网站模板.zip app应用程序网站模板下载.zip html5 3d宽屏幻灯片代码.zip 质感UI博客HTML5模板.zip 微信小程序源码-云笔记 JQuery-flip-Demo JAVA打飞机游戏毕业设计(源代码+论文) 白色商务html网页模板.zip 图片素材售卖网站HTML5模板.zip 【PHP源码】HDWiki 4.0.5 UTF-8 Bulid 090820_hdwiki-v4.0.5utf8-20090820.zip 房产家居html5网页模板.zip css3自定义输入元素.zip 使用Java编写的RabbitMQ连接池方法 红色宽屏APP官网产品模板.zip jquery左右回弹滑动幻灯片.zip 带动画效果CSS3手风琴菜单.zip js网页版的贪吃蛇游戏.zip Crystal Clear响应式HTML模版.zip 白色简洁的网站模板.zip 仿2958.cn精品商机触屏版html5手机wap商机网站模板下载.zip 殡仪馆丧事服务网站模板.zip 微信小程序源码-潮品商城 【ASP.NET源码】Asp.net mvc blog 小博客程序源码_mvcbloga.zip 城市建筑HTML5模板.zip CSS3左侧图标菜单点击全屏切换代码.zip 【PHP源码】心雨CMS1.13安装版本_113.zip jQuery图片轮播幻灯片插件Diapo.zip jquery实现隔行换色特效代码.zip Android客户端+基于Spring的Java后台实现的无线电监测小项目 HTML5响应式导航.zip 微信小程序源码-爱拼宝宝商城 3D旋转展示幻灯片jquery.zip 灰褐博客CSS网页模板.zip jQuery仿苹果Skype应用程序.zip 横向滚动鼠标插件Horwheel.zip jQuery品牌LOGO换一批动画特效.zip 【PHP源码】IP流量放大程序_adsystem2.zip 微信小程序源码-lifeTools jQuery原始图片对比.zip 经典淘宝客排行榜-Wordpress模板-粉红色风格.zip jQuery鼠标星级打分特效.zip 质感摄影网站html5模板.zip ECShop 堂京东商城模板.zip jQuery下划线跟随导航菜单.zip 时尚艺术css网页模板.zip jquery鼠标经过遮罩显示标题.zip jQuery产品图片缩放切换代码.zip 百叶窗风格左右滑动幻灯片.zip jQuery带动画效果竖直菜单切换代码.zip 带搜索幻灯片HTML模板.zip HTML5 SVG区域线图表.zip jQuery鼠标点击弹出登录框代码.zip 韩国相框设计模板下载.zip jQuery图文滑动切换.zip 左侧菜单 SlidingPaneLayout 【PHP源码】IPB(Invision Power Board) 3.0.1_board3.zip WP TangStyle主题.zip 支付宝第三方支付.NET MVC版(含有手机版) jQuery图片内部放大插件Zoomio.zip 微信小程序 - 星巴克中国.zip 【PHP源码】snews v1.63 多用户版_snewsmu.zip 旋转木马切换特效slick.zip 蓝色盛大迷你CSS网页模板.zip jQuery螺纹旋转切换图片特效.zip jQuery火焰灯动画导航条.zip SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行 【PHP源码】项目管理程序 Collabtive v0.4.9 汉化版_collabtive049_code52.net.zip 【ASP.NET源码】.NET新闻系统C#(毕业设计版) v1.0_08121011432965.zip SSH2+mysql网上商城,经典(整合开发) HTML5 Canvas粒子数字时钟特效.zip jQuery图片曲线循环切换展示代码.zip 农村别墅设计网站模板.zip SmartQQ协议,可直接加入项目使用 仿QQ空间图片放缩查看 CSS3+HTML5大型下拉菜单.zip 大学生就业管理系统(网站)学校实训项目 jQuery实现滚动新闻代码下载.zip HTML5 SVG盒子爆炸动画特效.zip Noka tag 软件标签 v3.0 jQuery弹出框选择生日代码.zip 企业人事管理系统-毕业设计 jQuery元素漂浮抖动导航菜单.zip jquery折叠滑出菜单.zip css3立体旋转菜单.zip jQuery五屏轮播手风琴代码.zip 蓝色波浪线背景CSS模板.zip 旅行社旅游公司网站模板.zip
举报X