简介

在前后端分离情况下实现微信服务号和订阅号授权登录,项目使用springboot+Vue前后端分离的开发模式。

备注:目前只提供后端代码实现以及业务逻辑

流程图

服务号

开发逻辑

进入活动页面根据codestate参数判断,如果参数为空则调用微信授权URL路径接口,否则就调用获取用户授权信息接口,通过codestate就能够获取到当前授权用户的用户信息。

步骤

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

微信授权登录-前后端分离相关推荐

  1. 微信第三方登录前后端分离实现思路

    微信第三方登录前后端分离实现思路 前端实现 这里说一下前后端的思路,页面加载时声明一个变量state='时间戳+6位随机数', 前端路径生成二维码, 其中有个state参数需要我们传递,这个参数你传什 ...

  2. H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)

    实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...

  3. 微信授权(前后端分离授权)

    关于网页授权的微信开发文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 微信授权分为以下四步: 1 ...

  4. H5 微信公众号 授权登录 前后端分离篇(前后端联调_03)

    文章目录 1. 获取code 2. 返回报文解析 3. 源码 1. 获取code 前端请求微信获取code 回调信息 https://open.weixin.qq.com/connect/oauth2 ...

  5. H5 微信公众号 授权登录 前后端分离篇(后端02)

    文章目录 1. 依赖 2. 方法 1. 依赖 <properties><weixin-java.version>4.2.0</weixin-java.version> ...

  6. 微信公众号前后端分离授权登录

    前后端分离模式下微信授权登录 https://blog.csdn.net/qq_39524670/article/details/81118721?utm_medium=distribute.pc_r ...

  7. php前后端分离登录,前后端分离下如何登录

    1 Web登录涉及到知识点 1.1 HTTP无状态性HTTP是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于 ...

  8. springboot+mybatis-plus+vue完成微信支付(前后端分离)

    微信支付的学习链接:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 一.数据库准备 t_order表 主要完成订单查询 /* ...

  9. SSO单点登录前后端分离完整版·(开源)

    前言:3月建的仓,完成确是在7月中旬,实际完成时间加起来不到10天,中间停滞了很久,主要工作太忙,白天没时间搞,况且工作摸鱼也不是我的作风,晚上下班回家要帮家人一起带娃,唯一的时间也会用来看看书和视频 ...

最新文章

  1. 在CentOS 6.3 64bit上为Apache Traffic Server 4.2.3挂载SSD并压测
  2. 错误:Error #2032解决方案
  3. Vue入门一、常用的指令
  4. TCP连接过程:三次握手与四次握手—Vecloud微云
  5. OpenGL坐标系转化之投影坐标系
  6. 5款不可或缺的Android App
  7. FreeBSD下安装配置Hadoop集群(性能调优)
  8. 持续畅销20年的《C#高级编程》出第11版了!
  9. 编写Dockerfile的最佳实践
  10. Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名
  11. [leetcode]376. 摆动序列
  12. DIV下的DIV居中
  13. PHP Socket 深度探索 (一)
  14. java 美元符号_使用单个美元符号“$”作为java类名称的任何风险?
  15. 【Hexo】hexo在文章中添加图片
  16. linux解压img镜像文件,Linux系统上解压或挂载img文件的方法
  17. linux系统文件夹
  18. 自制USB转串口TTL(ch340)
  19. 目前投资区块链三大风险
  20. 梯度下降学习率的影响

热门文章

  1. npm ERR! 404 Not Found - GET https://registry.npmmirror.com/@vue%2fvue-loader-v15 - [NOT_FOUND] @vue
  2. 【数字后端设计--PA分析】芯片设计中的IR drop是什么?
  3. 关于B2B和B2C知识
  4. 计算机在医院审计的应用,计算机辅助审计在医院经济责任审计中的应用解析(转)...
  5. 无盘服务器 cad 无法添加菜单,创世纪无盘安装photoshop和cad2002
  6. 免费office哪个版本好用
  7. 举头望明月打计算机术语,月亮的谜语怎么说及答案
  8. 5655. 重新排列后的最大子矩阵
  9. 互联网舆情监测系统的设计研究,TOOM舆情监测系统研究框架?
  10. SPSS——相关分析——Spearman秩相关系数