React 微信扫码登陆网页

微信扫码登陆网页

      • 第一步:微信开放平台申请应用
      • 第二步:前端生成二维码
      • 第三步:微信扫码授权

微信官方开发说明文档

第一步:微信开放平台申请应用

微信开放平台注册开发者账号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程

  • 进入微信开放平台。
  • 使用帐号登录后进入帐号中心 =》开发者资格认证 =》认证(需要年费300RMB,另外认证需要提交公司营业执照一些信息)此处按要求填写即可。
  • 进入管理中心=》网站应用=》创建网站应用=》填写基本信息=》填写网站信息。需要说明的是开发信息中有个授权回调域,此处填写的是我们项目所在的域名(此域名可以修改,其他信息修改需要重新审核)。
  • 提交成功后等待审核。审核成功能拿到 AppID 和AppSecret。

第二步:前端生成二维码

// 步骤1:在页面中先引入如下JS文件(支持https):
http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js

//步骤2:在需要使用微信登录的地方实例以下JS对象
 var obj = new WxLogin({
	 self_redirect:true, //true:手机点击确认登录后可以在 iframe 内跳转到 redirect_uri,false:手机点击确认登录后可以在 top window 跳转到 redirect_uri。默认为 false。
	 id:"login_container", //第三方页面显示二维码的容器id
	 appid: "", //应用唯一标识,在微信开放平台提交应用审核通过后获得
	 scope: "", //应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
	 redirect_uri: "",//重定向地址,需要进行UrlEncode
	 state: "",//用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
	 style: "",//提供"black"、"white"可选,默认为黑色文字描述。详见文档底部FAQ
	 href: ""//自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ
 });
// react 实战例子
import React from "react";
import _ from "lodash";
import { useMount } from "ahooks";
import './styles.less'

export const QrCodeLogin = function (props: { onSuccess?: Function }) {
	useMount(() => {
		initQrcode()
	})
	const initQrcode = async () => {
		// 注意 这里样式是使用的base64加密方式,也可以跟官方文档一样使用css链接处理
		let customeStyle = "data:text/css;base64,Lnd4X3FyY29kZSBpZnJhbWUgeyB3aWR0aDogMjAwcHggIWltcG9ydGFudDsgaGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50OyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7fQoubG9naW5QYW5lbCB7IG1hcmdpbjowOyBwYWRkaW5nOiAwOyB9Ci5sb2dpblBhbmVsIC50aXRsZSwgLmxvZ2luUGFuZWwgLmluZm8geyBkaXNwbGF5OiBub25lOyB9Ci5pbXBvd2VyQm94IC5xcmNvZGUgeyBtYXJnaW46IDA7IHdpZHRoOiAyMDBweDsgYm9yZGVyOiBub25lOyB9";
		let stateData: any = await _RequestTools.promiseQuery({//_RequestTools封装的请求方法 这里向后端请求拿到state的值
			url: "/auth/**/**",
			queryParams: {}
		})
		new WxLogin({
			self_redirect: false,
			id: "wx_login_container",
			appid: "", //微信开放平台网站应用appid
			scope: "snsapi_login",
			redirect_uri: encodeURI('https://xxxxx.com'), //设置扫码成功后回调页面接口
			state: stateData,
			style: "black",
			href: customeStyle,  //自定义微信二维码样式文件
		});
	}
	return (
		<div className="wxlogin-box">
			<div style={{ fontSize: 16, color: '#333', marginBottom: 10 }}>扫码登录</div>
			<div id='wx_login_container' className="wx_qrcode"></div>
			<div style={{ fontSize: 14, color: '#666' }}>请使用微信扫描二维码登录</div>
		</div>
	)
}

实现效果
在这里插入图片描述

第三步:微信扫码授权

// 通过code获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
//刷新access_token有效期
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
//通过access_token调用接口
// 以上都是后端处理

授权页面
在这里插入图片描述

授权后回调:后端接口处理完成后,处理回调当前页面

后端实现部分可以看下这篇大佬的文章 基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652833.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用了那么久的可道云teamOS,居然才发现这个隐藏的功能:一键存图,无需下载

在日常的工作或学习中&#xff0c;我们在遇到喜欢的图片时&#xff0c;总会想要保存下来以备后用。 然而&#xff0c;传统的图片保存方式通常需要我们右键另存为&#xff0c;或者复制链接、打开下载工具&#xff0c;甚至可能需要跳转到其他应用或网页才能完成下载。 存在电脑本…

jmeter之MD5加密接口请求教程

前言&#xff1a; 有时候在项目中&#xff0c;需要使用MD5加密的方法才可以登录&#xff0c;或者在某一个接口中遇到 登录获取token后才可以进行关联&#xff0c;下面介绍下遇到的常见使用 一、第一种方法&#xff1a;使用jmeter自带的函数助手digest 选择工具&#xff0c;选…

IC开发——verdi基本用法

1. 基础知识 1.1. verdi VCS和Verdi这两个工具&#xff0c;这两个工具目前都属于synopsys公司。VCS主要负责编译运行Testbench和RTL&#xff0c;并负责生成相应的波形文件。而verdi主要负责加载波形文件&#xff0c;查看信号的波形及其对应的代码来进行调试验证。Verdi最开始…

Spring Boot集成六大常用中间件,附集成源码,亲测有效

目录 万字论文&#xff0c;从0到1&#xff0c;只需1小时获取途径1、Spring Boot如何集成Spring Data JPA&#xff1f;2、Spring Boot如何集成Spring Security&#xff1f;3、Spring Boot如何集成Redis&#xff1f;4、Spring Boot如何集成RabbitMQ&#xff1f;5、Spring Boot如何…

PGP软件安装文件加密解密签名实践记录

文章目录 环境说明PGP软件安装PGP软件汉化AB电脑新建密钥并互换密钥对称密钥并互换密钥 文件加密和解密A电脑加密B电脑解密 文件签名A电脑签名文件B电脑校验文件修改文件内容校验失败修改文件名称正常校验 环境说明 使用VM虚拟两个win11,进行操作演示 PGP软件安装 PGP软件下…

ML307R OpenCPU 网络初始化流程介绍

一、网络初始化流程 二、函数介绍 三、示例代码 四、代码下载地址 一、网络初始化流程 模组的IMEI/SN获取接口可在include\cmiot\cm_sys.h中查看,SIM卡IMSI/ICCID获取接口可以在include\cmiot\cm_sim.h中查看,PDP激活状态查询可以在include\cmiot\cm_modem.h中查看 二、函…

Java面试八股之多线程编程中什么是上下文切换

多线程编程中什么是上下文切换 上下文切换&#xff08;Context Switch&#xff09;是操作系统为了实现多线程或进程并发执行而采取的一种机制。在Java多线程环境中&#xff0c;上下文切换具体指的是CPU控制权从一个正在运行的线程转移到另一个就绪并等待CPU执行权的线程的过程…

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景

参考来源&#xff1a; 极客时间专栏&#xff1a;赵成的运维体系管理课 极客时间专栏&#xff1a;全栈工程师修炼指南 赵成大佬在鹏讯云社区的文章&#xff08;77篇&#xff09; 有了CMDB&#xff0c;为什么还要应用配置管理 故障没有根因&#xff0c;别再找了 如何理解CMDB的套…

构建镜像时候出现奇怪的现象时候

一、背景 构建镜像时候&#xff0c;昨天还好好的&#xff0c;今天出现奇怪的现象 二、查看现象 docker system df#cache 显示600G 三、步骤 这操作比较轻微&#xff0c;20以前的缓存清理掉 docker builder prune --filter until480h # 清除20填以前的构建缓

【智能家居入门1】环境信息监测(STM32、ONENET云平台、微信小程序、HTTP协议)

作为入门本篇只实现微信小程序接收下位机上传的数据&#xff0c;之后会持续发布如下项目&#xff1a;①可以实现微信小程序控制下位机动作&#xff0c;真正意义上的智能家居&#xff1b;②将网络通讯协议换成MQTT协议再实现上述功能&#xff0c;此时的服务器也不再是ONENET&…

对于高速信号完整性,一块聊聊啊(16)

本文将进行串行链路前仿真&#xff08;包括有源和无源&#xff09; 1&#xff09;在ADS中搭建好S参数无源链路原理图&#xff0c;并设置好各项参数&#xff0c;尤其是S仿真器频率、起始频率和步长&#xff0c;如下图所示。 2&#xff09;查阅所需仿真的信号标准规范文件&#…

使用Python操作Jenkins

大家好&#xff0c;Python作为一种简洁、灵活且功能丰富的编程语言&#xff0c;可以与各种API轻松集成&#xff0c;Jenkins的API也不例外。借助于Python中的python-jenkins模块&#xff0c;我们可以轻松地编写脚本来连接到Jenkins服务器&#xff0c;并执行各种操作&#xff0c;…

服务器数据恢复—EVA存储异常断电重启后虚拟机无法启动如何恢复数据?

服务器存储数据恢复环境&#xff1a; 某品牌EVA8400&#xff0c;服务器上安装VMware ESXi虚拟化平台&#xff0c;虚拟机的虚拟磁盘包括数据盘&#xff08;精简模式&#xff09;快照数据盘&#xff0c;部分虚拟机中运行oracle数据库和mysql数据库。 服务器存储故障&检测&…

Python bqplot:轻松打造炫酷交互式数据可视化

更多Python学习内容&#xff1a;ipengtao.com bqplot是一个用于Jupyter Notebook的交互式数据可视化库&#xff0c;由Jupyter团队开发。它基于HTML5 Canvas和d3.js&#xff0c;并使用ipywidgets进行交互&#xff0c;允许用户通过Python代码创建复杂的交互式图表。bqplot的设计目…

【前端】XML和HTML的区别详解

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

重生之 SpringBoot3 入门保姆级学习(07、整合 Redis 案例)

重生之 SpringBoot3 入门保姆级学习&#xff08;07、整合 Redis 案例&#xff09; 导入 Maven 依赖并刷新 Maven <dependencies><!--springboot3 Web 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring…

中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!

2024年5月14日&#xff0c;为进一步深化合作&#xff0c;促进业务共同发展&#xff0c;实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…

视频营销的智能剪辑:Kompas.ai如何塑造影响力视频内容

引言&#xff1a; 在当今数字化的营销领域&#xff0c;视频内容已经成为品牌吸引用户注意力、建立品牌形象和提升用户参与度的重要方式。然而&#xff0c;要想制作出具有影响力的视频内容&#xff0c;并不是一件容易的事情。这就需要借助先进的技术和工具&#xff0c;如人工智能…

009、字符串_应用场景

缓存功能 Redis作为缓存层&#xff0c;MySQL作 为存储层&#xff0c;绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高 并发的特性&#xff0c;所以缓存通常能起到加速读写和降低后端压力的作用。 计数 许多应用都会使用Redis作为计数的基础工具&#xff0c;它可…