目录

一、封装获取code的函数、存储token函数、获取token函数

二、点击请求微信公众号授权并跳转

三、重定向跳转会当前链接获取code登录

四、整体流程的描述:


一、封装获取code的函数、存储token函数、获取token函数

// getRequest() 函数用于获取url中查询参数getRequest() {// 获取当前urllet url = window.location.search;// 创建theRequest对象let theRequest = new Object();// 如果当前url中包含‘?’if (url.indexOf("?") != -1) {// 获取url中‘?’之后的字符串let str = url.substr(1);// 将字符串按照‘&’分割let strs = str.split("&");// 遍历分割后的字符串数组for (let i = 0; i < strs.length; i++) {// 将每个字符串按照‘=’分割,以此获取参数名和参数值theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);}}// 返回theRequest对象return theRequest;}

二、点击请求微信公众号授权并跳转

//请求微信公众号登录clickVote(data) {let that = this;//判断是否存在token 存在token做业务处理 如登录成功可投票等if (this.getToken() {that.clickPostVoat(data);return;} else {let code = this.getRequest().code; //是否存在codelet oUrl = '重定向跳转的网址';if (!code) {let rUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${constant.WEIXIN_PHONE_APPID}&redirect_uri=${oUrl}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;window.location.href = rUrl}}}

三、重定向跳转会当前链接获取code登录

//react生命周期 componentDidMount
mount() {this.chatCode =this.getRequest().code;//判断是否有code 请求登录并传code给后端处理if (this.chatCode && !this.getToken() {this.getLoginCode(this.chatCode);}}// 获取code 登录async getLoginCode(code) {const res = await request({method: "POST",url: api.publicAccountCheckCode,data: {wxCode: code,},});if (res.data) {const { access_token } = res.data;//存储token到浏览器this.saveToken(access_token);stores.Frame.success("登录成功");}}

四、整体流程的描述:

1. 用户点击网站上的微信授权登录按钮。
2. 前端代码生成一个随机字符串作为state参数,并将其存储在本地缓存中以供后续使用。
3. 前端代码构建完整的微信授权URL地址(包括appid、redirect_uri和scope等参数)并携带前面生成的state参数。同时,用户被重定向至该URL地址。
4. 微信服务器验证请求是否合法,并展示给用户一个授权页面。如果用户同意,则微信服务器会回调我们之前设置好的redirect_uri,并传递code和state两个参数值回来。(这里需要注意:如果不匹配则说明有人恶意篡改了你发起授权登陆过程)
5. 在前端代码中解析返回结果并提取出唯一的Code值。然后通过Ajax或fetch API发送HTTP POST 请求, 将 Code 参数添加到 body 中提交给服务端.
6. 服务端接收到Code值后, 向微信服务器发送HTTP GET 请求获取Access_Token 和 OpenId 等信息.
7. 服务端将从微信服务器获取到 Access_Token 和 OpenId 等信息保存在数据库或者缓存中.
8. 返回成功状态码及必要数据给客户端
9. 客户端根据响应结果进行相应操作,例如跳转页面、刷新界面等。

H5微信公众号授权登录相关推荐

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

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

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

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

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

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

  4. vue h5微信公众号授权获取用户信息

    vue h5微信公众号授权获取用户信息 1.申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.修改网页授权 ...

  5. H5 实现公众号授权登录

    H5 实现公众号授权登录 1. 开发者在微信公众平台申请开发者账号,并获取开发者ID和AppSecret. 2. 开发者在微信公众平台设置授权回调页面域名,并获取授权域名. 3. 开发者在H5网页中引 ...

  6. 微信公众号授权登录(asp.net + angular)

    微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...

  7. vue移动端项目微信公众号授权登录

    前言 在我们做移动端项目时, 很多功能是以登录后才能进行后续的操作, 并且许多pc端的网页都有微信扫码登录功能, 为了做到pc与移动端统一, 往往移动端项目需要添加微信登录功能, 那么为什么手机端不能 ...

  8. Java在Web端微信公众号授权登录

    Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...

  9. 【SpringBoot学习】46、SpringBoot 集成 Uniapp 实现微信公众号授权登录

    文章目录 一.公众号环境搭建 二.Spring Boot 集成微信公众号 1.application.yml 微信配置 2.控制层接口 三.Uniapp 实现授权登录 一.公众号环境搭建 本篇文章使用 ...

最新文章

  1. 将输入字符串t中从第m个字符开始的全部字符复制到字符串s中_leetcode第32双周赛第二题leetcode1540. K 次操作转变字符串...
  2. 异步IO一定更好吗?
  3. Linux 命令行的聊天工具 CenterIM
  4. 阿里云服务器被挖矿病毒minerd***的解决方法
  5. 阿里风控大脑关于大数据应用的探索与实践
  6. php汽车之家数据api,基于聚合数据的全国违章直连查询接口示例-PHP版
  7. (转)Android中JNI编程的那些事儿
  8. Java实训项目10:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口实现类
  9. 【数电】(一) 进制转换编码 原码,反码,补码
  10. [Extjs 4] 类系统
  11. Python3 爬虫之 Scrapy 核心功能实现(二)
  12. BZOJ1301 字符加密Cipher (后缀数组)
  13. [TACL18]隐式句法树模型真的能学到句子中有意义的结构吗?
  14. nginx部署静态网站
  15. 即学即用的30个python常用代码
  16. AE表达式中英对照及解释
  17. 进销存excel_进销存管理系统excel模板
  18. ABO血型系统遗传规律表
  19. js清空浏览器cokie缓存_JS实现清除指定cookies的方法
  20. userland免root运行linux,UserLAnd(GNU/Linux安装)

热门文章

  1. 国寿投资控股拟成重庆信托二股东 金融业混业经营提速
  2. 如何获得spring配置文件头部配置(applicationContext.xml)
  3. cpu核数和逻辑个数的区别_CPU的核心数、线程数的关系和区别
  4. 专业不对口计算机成绩查询入口,高考成绩查询入口已开通
  5. python 源码解析 object 定义的介绍
  6. Sleep()函数的使用方法详解
  7. 技术动态 | ChatGPT 下的知识图谱审视:一次关于必然影响、未来方向的讨论实录与总结...
  8. 使用.Net Core 2.1开发Captcha图片验证码服务
  9. 华为鸿蒙拍照,华为首部鸿蒙手机P50来了!顶级拍照再升级,麒麟芯片或绝唱……...
  10. 极简的浏览器主页--BD新标签页