微信授权登录-前后端分离
简介
在前后端分离情况下实现微信服务号和订阅号授权登录,项目使用springboot+Vue前后端分离的开发模式。
备注:目前只提供后端代码实现以及业务逻辑
流程图
服务号
开发逻辑
进入活动页面根据code
和state
参数判断,如果参数为空则调用微信授权URL路径接口,否则就调用获取用户授权信息接口,通过code
和state
就能够获取到当前授权用户的用户信息。
步骤
1、首次进入页面,获取微信重定向URL
首次进入页面,如果地址中没有code和state,那么就表示当前活动没有授权用户信息,所以此时需要获取后台拼接好的微信重定向URL接口,然后通过URL跳转授权。
接口返回如下字符串:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri= redirectURL&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
- APPID : 服务号APPID
- redireURL : 重定向页面地址
具体参考AuthorizedLoginController类中的authorizedLoginUrl方法
2、通过微信接口重定向到活动页面
通过用户确认授权,微信再重定向到活动页面,并且返回code和state参数,通过这两个参数再次调后台接口,获取用户授权信息。
http://m.ershouhui.com/yf/201710/finger/activity/?code=021ieRZt1CVY3a0GqNZt175QZt1ieRZE&state=STATE
根据返回的code和state,处理之后调用获取授权信息方法
3、通过code和state获取用户信息
根据code和state参数,获取用户授权信息。
具体参考AuthorizedLoginController类中的getWxAuthorizedUser方法
订阅号
由于订阅号无法从网页直接授权登录,所以需要借助于服务号APPID来关联实现用户授权等操作。
想获取当前用户是否关注订阅号,需要通过https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN
来获取用户信息,返回的参数中有一个字段叫subscribe,为1表示已经关注,为0表示未关注。
参考资料
- 微信JS-SDK开发的Demo
- 微信JS-SDK开发文档
- 申请微信公众平台接口测试账号
参与者
pengcheng3211@gmail.com
微信授权登录-前后端分离相关推荐
- 微信第三方登录前后端分离实现思路
微信第三方登录前后端分离实现思路 前端实现 这里说一下前后端的思路,页面加载时声明一个变量state='时间戳+6位随机数', 前端路径生成二维码, 其中有个state参数需要我们传递,这个参数你传什 ...
- H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)
实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...
- 微信授权(前后端分离授权)
关于网页授权的微信开发文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 微信授权分为以下四步: 1 ...
- H5 微信公众号 授权登录 前后端分离篇(前后端联调_03)
文章目录 1. 获取code 2. 返回报文解析 3. 源码 1. 获取code 前端请求微信获取code 回调信息 https://open.weixin.qq.com/connect/oauth2 ...
- H5 微信公众号 授权登录 前后端分离篇(后端02)
文章目录 1. 依赖 2. 方法 1. 依赖 <properties><weixin-java.version>4.2.0</weixin-java.version> ...
- 微信公众号前后端分离授权登录
前后端分离模式下微信授权登录 https://blog.csdn.net/qq_39524670/article/details/81118721?utm_medium=distribute.pc_r ...
- php前后端分离登录,前后端分离下如何登录
1 Web登录涉及到知识点 1.1 HTTP无状态性HTTP是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于 ...
- springboot+mybatis-plus+vue完成微信支付(前后端分离)
微信支付的学习链接:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 一.数据库准备 t_order表 主要完成订单查询 /* ...
- SSO单点登录前后端分离完整版·(开源)
前言:3月建的仓,完成确是在7月中旬,实际完成时间加起来不到10天,中间停滞了很久,主要工作太忙,白天没时间搞,况且工作摸鱼也不是我的作风,晚上下班回家要帮家人一起带娃,唯一的时间也会用来看看书和视频 ...
最新文章
- 在CentOS 6.3 64bit上为Apache Traffic Server 4.2.3挂载SSD并压测
- 错误:Error #2032解决方案
- Vue入门一、常用的指令
- TCP连接过程:三次握手与四次握手—Vecloud微云
- OpenGL坐标系转化之投影坐标系
- 5款不可或缺的Android App
- FreeBSD下安装配置Hadoop集群(性能调优)
- 持续畅销20年的《C#高级编程》出第11版了!
- 编写Dockerfile的最佳实践
- Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名
- [leetcode]376. 摆动序列
- DIV下的DIV居中
- PHP Socket 深度探索 (一)
- java 美元符号_使用单个美元符号“$”作为java类名称的任何风险?
- 【Hexo】hexo在文章中添加图片
- linux解压img镜像文件,Linux系统上解压或挂载img文件的方法
- linux系统文件夹
- 自制USB转串口TTL(ch340)
- 目前投资区块链三大风险
- 梯度下降学习率的影响
热门文章
- npm ERR! 404 Not Found - GET https://registry.npmmirror.com/@vue%2fvue-loader-v15 - [NOT_FOUND] @vue
- 【数字后端设计--PA分析】芯片设计中的IR drop是什么?
- 关于B2B和B2C知识
- 计算机在医院审计的应用,计算机辅助审计在医院经济责任审计中的应用解析(转)...
- 无盘服务器 cad 无法添加菜单,创世纪无盘安装photoshop和cad2002
- 免费office哪个版本好用
- 举头望明月打计算机术语,月亮的谜语怎么说及答案
- 5655. 重新排列后的最大子矩阵
- 互联网舆情监测系统的设计研究,TOOM舆情监测系统研究框架?
- SPSS——相关分析——Spearman秩相关系数