微信公众号 用户绑定 php,微信公众号开发——网页授权实现简化用户绑定
本教程的学习条件:
了解微信公众号开发的基本知识。已经申请了微信公众号并设置了开发模式等。如果不了解,请先到微信官方平台学习
需要服务器端开发的基本技能,本文主要讲解流程,基本不涉及具体开发语言。
首先我们要明确绑定微信用户和系统用户,其目的是为了用户在一次绑定以后,再次通过微信访问系统时可以由系统自动为其登录,避免用户反复登录操作,使用户操作体验更流畅。
微信绑定用户的核心逻辑其实就是把微信用户的 OpenID 和本系统的用户 UserId 建立关联关系。目前可以获得微信用户的 OpenID 的方法有 2 种:
1 从用户交互的 xml 中获取:
获取不需要授权页面,但是需要用户主动和公众号互动,常见的方式是使用公众号菜单,设置为回复消息,在用户点击菜单事件推送到服务器接口的 XML 中获取 OpenId ,然后组织一个与 OpenId 相关的链接放到回复内容里,用户点击此链接再跳转到绑定页面。
2 使用网页授权获取用户基本信息
这是利用微信提供的 OAuth2.0 接口,不需要用户额外点击菜单项和回复消息中的,可以直接从微信公众号里的移动站点任何页面发起。尤其是绑定用户时只需要知道 OpenId,不需要完善的用户信息,还可以使用微信提供的静默授权模式,这时连用户授权的页面都不用出现,获取 OpenId 的过程对用户几乎是透明的,这种流程更流畅。
本文重点介绍第 2 种方式。对应的微信官方文档在 网页授权获取用户基本信息
先看一下整体流程图。
用户已登录的判断是通过本系统自行判断的。检测出用户未登录时,程序跳转到微信 OAuth 授权页,比如
%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
注意我们使用的静默授权方式,scope 参数要取值 snsapi_base。redirect_uri 参数值是要跳回我系统的 URL 地址,这里要进行 URL 编码。
跳转到微信授权页时,不需要用户点击授权,所以不会停,直接跳回到本系统的 URI,并且在其后再加上 code 参数,如上例中的
而这个跳回的页面,就是获取 OpenId 的程序所在。这页程序里使用跳回时得到的 code 参数值,再去调用微信服务器 access_token 接口即可得到 OpenId,即这个接口在返回 access_token 的同时也会返回 OpenId:
注意这个接口的 URL 前边是 ,和其它微信接口 是不同的!
到此我们已经得到了微信用户的 OpenId,此时再输出一个登录表单给用户,让用户填写用户名/密码,或者使用现在更流利的用户登录方式,填写手机号获取短信验证码,POST 提交后,即可查到用户在本系统的 UserId,我们在服务器端记录关联关系,整个绑定过程就完成了。
OpenId 作为微信用户标识字符串,出于完全考虑,原则上不能以明文方式出现在表单里以及在表单中提交上来。OpenId 防伪造防重复等等,网上已有不少研讨。我在实际开发中,发现比较简明的方式是直接使用有效期 5 分钟的 session 存储 OpenId,此 session 使用时立即失效,然后把 session 的 key 作为参数输出给用户端。
微信公众号 用户绑定 php,微信公众号开发——网页授权实现简化用户绑定相关推荐
- 微信公众号开发__微信网页授权并获取用户基本信息(是否关注公众号、头像、昵称等)
本人最近要做微信公众号网页开发的项目,其中有个需求是判断用户是否关注公众号,由于之前没有接触过微信授权的东西,所以提前开始做调研.在度娘上看了好多博客.百度知道.百度经验.知乎问答等,还仔细阅读了微信 ...
- 微信公众号网页授权,获取用户信息以及openid -- PHP后台
微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...
- 公众号h5获取手机号权限_微信公众号开发之网页授权(获取用户信息)
这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础. ...
- 微信公众号开发-网页授权——配置测试账号
思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...
- 微信开发——网页授权
微信开发--网页授权 前期准备 前端 后端 前期准备 ①微信客户端中访问第三方页面,公众号可以通过网页登陆授权,获取微信用户的基本信息(头像.昵称等),实现业务逻辑.一切按照官方文档说明开发. ②安装 ...
- 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆
原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个 ...
- (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835
从接触公众号到现在,通过不断积累学习,对如何调用微信提供接口有了一定的见解.当然在开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开 ...
- 微信公众号平台开发-网页授权
文案地址 :https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 网页授权的类型 1.snsapi_base (网 ...
- 微信开发 网页授权获取用户基本信息
微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...
最新文章
- 雨滴桌面时间插件_如何设置极简桌面?学会了看电脑都赏心悦目
- 计算机网络实验中S1是啥意思,某计算机A需要访问域名www.yy.com,它首先向本域DNS服务器S1查询,.._简答题试题答案...
- C#抽象类与密封类-abstract-sealed
- java 8 Lambda 表达式(副作用)
- Taro+react开发(57) 图片引入
- flask get和post
- linux url%7b怎么转化成,shell下解码url
- python-数据结构-大学生-航空订票系统
- 使用二维数组打印一个 10 行杨辉三角
- html对话框取消确定,MFC取消HtmlDialog对话框的确定和取消按钮方法
- 内网渗透-信息收集整合
- 1205 Lock wait timeout exceeded; try restarting transaction处理
- Messari:21年第二季度Web3及NFT报告
- 游戏机器人的开发工具及开发步骤
- 稳定智能的在线考试系统
- linux u盘空间越小 写入越慢,解决U盘容量变小问题
- fiddler抓包,搞定接口
- Linux下不保存退出以及相关退出命令
- python看网络电视
- GPS卫星定位接收器的NMEA协议解析