本教程的学习条件:

了解微信公众号开发的基本知识。已经申请了微信公众号并设置了开发模式等。如果不了解,请先到微信官方平台学习

需要服务器端开发的基本技能,本文主要讲解流程,基本不涉及具体开发语言。

首先我们要明确绑定微信用户和系统用户,其目的是为了用户在一次绑定以后,再次通过微信访问系统时可以由系统自动为其登录,避免用户反复登录操作,使用户操作体验更流畅。

微信绑定用户的核心逻辑其实就是把微信用户的 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,微信公众号开发——网页授权实现简化用户绑定相关推荐

  1. 微信公众号开发__微信网页授权并获取用户基本信息(是否关注公众号、头像、昵称等)

    本人最近要做微信公众号网页开发的项目,其中有个需求是判断用户是否关注公众号,由于之前没有接触过微信授权的东西,所以提前开始做调研.在度娘上看了好多博客.百度知道.百度经验.知乎问答等,还仔细阅读了微信 ...

  2. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

  3. 公众号h5获取手机号权限_微信公众号开发之网页授权(获取用户信息)

    这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础. ...

  4. 微信公众号开发-网页授权——配置测试账号

    思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...

  5. 微信开发——网页授权

    微信开发--网页授权 前期准备 前端 后端 前期准备 ①微信客户端中访问第三方页面,公众号可以通过网页登陆授权,获取微信用户的基本信息(头像.昵称等),实现业务逻辑.一切按照官方文档说明开发. ②安装 ...

  6. 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

    原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个 ...

  7. (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835

    从接触公众号到现在,通过不断积累学习,对如何调用微信提供接口有了一定的见解.当然在开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开 ...

  8. 微信公众号平台开发-网页授权

    文案地址 :https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 网页授权的类型 1.snsapi_base (网 ...

  9. 微信开发 网页授权获取用户基本信息

    微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...

最新文章

  1. 雨滴桌面时间插件_如何设置极简桌面?学会了看电脑都赏心悦目
  2. 计算机网络实验中S1是啥意思,某计算机A需要访问域名www.yy.com,它首先向本域DNS服务器S1查询,.._简答题试题答案...
  3. C#抽象类与密封类-abstract-sealed
  4. java 8 Lambda 表达式(副作用)
  5. Taro+react开发(57) 图片引入
  6. flask get和post
  7. linux url%7b怎么转化成,shell下解码url
  8. python-数据结构-大学生-航空订票系统
  9. 使用二维数组打印一个 10 行杨辉三角
  10. html对话框取消确定,MFC取消HtmlDialog对话框的确定和取消按钮方法
  11. 内网渗透-信息收集整合
  12. 1205 Lock wait timeout exceeded; try restarting transaction处理
  13. Messari:21年第二季度Web3及NFT报告
  14. 游戏机器人的开发工具及开发步骤
  15. 稳定智能的在线考试系统
  16. linux u盘空间越小 写入越慢,解决U盘容量变小问题
  17. fiddler抓包,搞定接口
  18. Linux下不保存退出以及相关退出命令
  19. python看网络电视
  20. GPS卫星定位接收器的NMEA协议解析

热门文章

  1. rabbitmq 生产者和消费者
  2. (ASCII代码 )密码破译
  3. iOS好用的三方推荐
  4. 定积分不等式套路总结
  5. Riemann积分和Lebesgue积分角度下一积分不等式的等号成立充要条件的研究
  6. TypeError: unhashable type
  7. 关于 Appium 环境搭建
  8. 数学/线性代数 {子式,余子式,代数余子式,拉普拉斯展开}
  9. 360天擎终端安全管理系统最新版6.0免费下载
  10. 全家桶大礼包Adobe Photoshop免费自取免费