react 接入企业微信登录组件

news2025/2/2 4:39:00

需求简述

把某web登录页替换成使用企业微信的扫码登录。

具体实现

  1. 自建应用:登录企微后台/应用管理,滑到最底部,创建应用并填写应用相关信息:

在这里插入图片描述
2. 创建成功之后,进入应用详情,配置可信域名以及授权登录:
在这里插入图片描述

  1. 配置可信域名:
    在这里插入图片描述
    注意:回调域名的配置规则必须要与企业主体关联的域名且不能包含协议头,不支持ip地址及短链域名
    域名验证:将校验文件下载下来,上传至配置的可信域名的服务器,通过nginx配置,浏览器能直接访问到该文件,则验证成功。
  2. 企业微信授权登录/web网页,设置授权回调域
    在这里插入图片描述
  3. 搭建本地联调环境
    由于调用企业微信的sdk,必须与自建应用配置的可信域名一致,否则调不通,处理如下:
    修改本地host文件,将127.0.0.1映射到可信域名下(18x.xxx.cn)
    在这里插入图片描述
    代理到https:mkcert ---- 用go写的零配置专门用来本地环境 https 证书生成的工具
    使用如下:
安装:   
brew install mkcert   /  npm install -g mkcert
为本地安装CA:   
 mkcert  -install     
 mkcert 18x.xxx.cn

成功安装CA会生成cert以及key两个文件
在这里插入图片描述
在webpack中配置https:

 devServer: {
    allowedHosts: 'all',
    https: {
      key: fs.readFileSync(
        'cn-key.pem文件的绝对路径'
      ),
      cert: fs.readFileSync(
        'cn.pem文件的绝对路径'
      )
    }
  },

登录面板参数配置:

ww.createWWLoginPanel({
      // 登录组件挂载元素
      el: "#ww_login",
      params: {
        login_type: "CorpApp",
        // 企业 CorpID
        appid: APP_ID,
        // 应用 AgentID
        agentid: AGENT_ID,
        // 登录成功后的跳转地址,注意:CUSTOM_CN 必须跟应用配置的授权登录回调域一致(域名+端口)
        redirect_uri: `${CUSTOM_CN}/api/sso/login`,
        // 该参数可用于防止 CSRF 攻击(跨站请求伪造攻击),可设置为简单随机数
        state: "WWLogin",
        // 登录成功跳转类型
        redirect_type: "callback",
        // 登录面板大小
        panel_size: "small",
        lang: "zh",
      },
      onLoginSuccess({ code }) {
        console.log(code, "9090");
        // redirect_type=callback 时,扫码成功后触发
        window.location.href = `${CUSTOM_CN}/api/sso/login?code=${code}`;
      },
      onLoginFail({ errCode, errMsg }) {
        console.log("error", errCode, errMsg);
        // 提示错误信息
        // 错误码参考:https://developer.work.weixin.qq.com/document/path/98152#%E9%99%84%E5%BD%95
      },
    });

执行命令yarn start,运行项目,将原本的127.0.0.1替换为可信域名https://18x.xxx.cn即可!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s中iptables与ipvs详解——2023.05

文章目录 背景介绍一、Iptables模式二、IPVS模式(NAT模式)三、内部原理理解Iptablesipvs区别 补充:CoreDNS 背景介绍 从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,…

mysql ACID实现基本原理(面试题)

mysql ACID实现基本原理(面试题) 原子性一致性隔离性持久性 ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的…

中介效应分析全流程汇总

一、中介效应说明 中介效应主要研究自变量对因变量影响的过程中,自变量是否通过中介变量再对因变量产生影响,那什么情况表明中介效应存在呢?如果自变量对因变量影响过程中,中介变量在模型中有着桥梁般的作用,那说明中…

Service事务优化(方法能否被事务控制?)

1.updateFile方法是否应该开启事务? 目前如果在updateFile方法上添加Transactional,当调用updateFile方法前会开启数据库事务,如果上传文件过程时间较长(例如用户在上传超大视频文件),那么数据库的食物持续…

IP-Guard客户端上插入加密盘时提示格式化,能否禁止该弹窗?

客户端上插入加密盘时提示格式化,能否禁止该弹窗? 1、当Shell Hardware Detection服务启动时,操作系统检测硬件的速度要快于客户端,而此时操作系统是不能识别加密后的移动盘的,因此认为加密盘异常,提示需要格式化,策略-客户端配置,选择禁止windows7播放功能。配置后不…

AI绘画出《三体》里的叶文杰

文 / 高扬(微信公众号:量子论) 春节的时候,我看完了《三体》第一部。现在《三体》动画片、《三体》国内版电视剧相继上线,毁誉参半。 一千个读者心里有一千个哈姆雷特,正好谷雨最近在研究MidJourney。我让她…

C++进阶 —— multimap

目录 一&#xff0c;multimap介绍 二&#xff0c;multimap使用 一&#xff0c;multimap介绍 multimap是关联式容器&#xff0c;按照特定顺序存储键值对<key、value>&#xff0c;其中多个键值对之间的key可以重复&#xff1b;通常按照key排序和唯一标识元素&#xff0c;…

阿里一面凉凉,幸获内推华为技术四面,offer到手

上个月&#xff0c;哥们从某小厂离职&#xff0c;转投阿里云&#xff0c;简历优秀&#xff0c;很顺利地拿到了面试通知&#xff0c;但之后的进展却让哥们怀疑人生了&#xff0c;或者说让哥们懵逼的是&#xff0c;面试阿里云居然第一面就被吊打&#xff1f;让哥们开始怀疑自己&a…

大型复杂地质模型如何实现可视化?知名公司MineRP给你答案!

行业&#xff1a;采矿业 挑战&#xff1a;采矿业客户在寻找未开发的矿体和有效挖掘方面面临着越来越多的挑战&#xff1b;不同的采矿系统之间缺乏整合&#xff0c;呈现出零散的矿山运营视图&#xff1b;地质模型、采矿计划、时间表和点云以及其他需要可视化的矿山技术数据集可…

算法(63)-二叉树的递归-搜索二叉树-满二叉树-平衡二叉树-

目录 1.二叉树 2.搜索二叉树&#xff1a; 3.满二叉树&#xff1a; 4.平衡二叉树 1.二叉树 先、中、后序遍历 先序&#xff08;中、左、右&#xff09;&#xff1a;1&#xff0c;2&#xff0c;4&#xff0c;5&#xff0c;3&#xff0c;6&#xff0c;7 中序&#xff08;…

两个好用到爆的Python模块,建议收藏~

在日常开发工作中&#xff0c;经常会遇到这样的一个问题&#xff1a;要对数据中的某个字段进行匹配&#xff0c;但这个字段有可能会有微小的差异。比如同样是招聘岗位的数据&#xff0c;里面省份一栏有的写“广西”&#xff0c;有的写“广西壮族自治区”&#xff0c;甚至还有写…

Axure教程——直方图(中继器)

本文将教大家如何用AXURE用中继器制作直方图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://yjkepz.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87842701 二、制作方法 &#xff08;1&#xff09;制作刻度表 设计5个刻…

golang链接mysql

复习一下 对象 package mainimport("fmt" )type User struct{uid intname string }func main(){var user Userfmt.Println(user) }协程 package mainimport("fmt" )func test(){fmt.Println("test func") }func main(){go test()fmt.Println(…

Socket安全(一)

文章目录 1. 安全Socket2. 保护通信3. 创建安全客户端Socket4. 选择密码组5. 事件处理器6. 会话管理 1. 安全Socket 前面介绍了Socket的基本使用&#xff0c;这里开始介绍Socket的安全问题&#xff0c;作为一个Internet用户&#xff0c;你确实有一些保护手段可以保护自己的隐私…

KUC755AE105 3BHB005243R0105 串行连接的自动配置

KUC755AE105 埃德蒙顿(pr web)-2007年5月23日-MatrikonOPC宣布为Allen-Bradley PLC发布MatrikonOPC服务器。该OPC服务器为所有Allen-3BHB005243R0105 分布式控制系统(DCS)提供了可靠的连接&#xff0c;代表了连接Allen-Bradley设备的真正的“一体化”解决方案。Allen-Bradley…

自动化测试中的失败截图和存log

如果我们在执行自动化测试的时候&#xff0c;希望能在失败的时候保存现场&#xff0c;方便事后分析。 对于UI自动化&#xff0c;我们希望截图在测试报告中。 对于api自动化&#xff0c;我们希望截取出错的log在测试报告中。 我开始自己蛮干&#xff0c;写了两个出错截图的方法。…

linux init系统和系统管理器-Systemd学习

一、Systemd 概述 1.1、init 程序介绍及其发展历程 Linux init程序是系统启动时第一个启动的进程&#xff0c;它负责初始化系统资源&#xff0c;加载操作系统核心模块&#xff0c;启动系统服务和用户进程。init程序是系统启动的重要组成部分&#xff0c;它为后续的系统操作提…

2023年上半年信息系统项目管理师上午真题及答案解析

1.“新型基础设施”主要包括信息技术设施、融合基础设施和创新基础设施三个方面。其中信息基础设施包括&#xff08; &#xff09;。 ①通信基础设施 ②智能交通基础设施 ③新技术基础设施 ④科教基础设施 ⑤算力基础设施 A.①③⑤ B.①④⑤ C.②③④ D.②…

【JavaSE】Java基础语法(三十六):File IO流

文章目录 1. File1.1 File类概述和构造方法1.2 绝对路径和相对路径1.3 File 类的常用方法1.4 递归删除文件夹及其下面的文件 2. IO2.1 分类2.2 字节输出流2.3 字节输入流2.4 文件的拷贝2.5 文件拷贝效率优化2.6 释放资源2.7 缓冲流2.8 编码表 3. commons-io 工具包3.1 API 1. F…

如何在竞争激烈的市场环境下打造技术铁粉:CSDN的案例分析

如何在竞争激烈的市场环境下打造技术铁粉&#xff1a;CSDN的案例分析 随着互联网的快速发展&#xff0c;技术平台不仅成为了人们获取信息、学习知识和交流经验的重要渠道&#xff0c;也成为了各大企业和个人展示自我、争夺市场份额的关键竞技场。在这个过程中&#xff0c;CSDN…