当前位置: 首页 > article >正文

react + antDesignPro 企业微信扫码登录

效果

实现步骤

1、项目中document.ejs文件引入企微js链接

注意:技术栈是使用的react + antDesignPro,不同的技术栈有不同的入口文件(如vue在html文件引入)

<script src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.7.js"></script>
2、在登录页面放置二维码容器
<div id="ww_login"></div>
3、在登录页面生成二维码

注意:目前项目需求为进入页面就展示二维码,所以在React的useEffect中进行生成的,如果有其它交互可通过其它交互进行动态生成二维码

useEffect(() => {
  new WwLogin({
    id: 'ww_login',
    appid: 'wwa2d9444d52111111',
    agentid: '1000000',
    redirect_uri: encodeURIComponent('http://oa.zzmjart.com/user/login'),
    state: Date.now() + '1000000',
  });
}, []);
4、扫码完成后监听路由,处理登录逻辑

注意:目前跟后端约定交互为扫完二维码后跳转项目登录页面,登录页面路由上会拼接code,前端监听路由query里面是否有code,如有code拿到code去调后端接口换取token,后端返回token后进行储存token/跳转页面

import { history } from 'umi';

useEffect(() => {
  if (history?.location?.query?.code) {
    qwLogin(history?.location?.query);
  }
}, [history]);


const qwLogin = async (values) => {
  try {
    const msg = await cpLogin({ code: values.code });
    if (msg.code === 200) {
      message.success('登录成功!');
      localStorage.setItem('token', msg.data.token);
      const redirect = localStorage.getItem('redirect');
      if (redirect) {
        localStorage.setItem('redirect', '');
        location.href = location.origin + decodeURIComponent(redirect);
      } else {
        location.pathname = '/';
      }
        return;
      }
      console.log(msg); // 如果失败去设置用户错误信息
    } catch (error) {
      message.error('登录失败,请重试!');
    }
};

注:本人前端小白 ,如有不对的地方还请多多指教


http://www.kler.cn/news/315822.html

相关文章:

  • MySQL缓冲池详解
  • react router v6
  • LLaMA-Factory 使用 alpaca 格式的数据集
  • 【Delphi】通过 LiveBindings Designer 链接控件示例
  • Java笔试面试题AI答之设计模式(5)
  • affine: python仿射变换包
  • 【题解】—— LeetCode一周小结38
  • 解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列
  • 周邦彦,北宋文坛的独特乐章
  • 前端工程化4:从0到1构建完整的前端监控平台
  • 自动化生成与更新 Changelog 文件
  • 花生壳、神卓互联等主流内网穿透技术分享
  • FTP服务
  • 编译 Android 11源码
  • 人工智能(AI)的影响下人类的生活样子
  • Shell 脚本学习
  • STM32 单片机最小系统全解析
  • Vue子组件样式受到父组件污染
  • 【C++11】异常处理
  • 【嵌入式】操作系统相关概念
  • 中序遍历二叉树全过程图解
  • 关于ClickHouse建表 集群表 SQL
  • GitHub 上高星 AI 开源项目推荐
  • QT For Android开发-打开PPT文件
  • 如何备份SqlServer数据库
  • Lua中..和...的使用区别
  • Oracle 启动动态采样 自适应执行计划
  • 计算机毕业设计Python深度学习房价预测 房价可视化 链家爬虫 房源爬虫 房源可视化 卷积神经网络 大数据毕业设计 机器学习 人工智能 AI
  • postman工具
  • http请求怎么解析的 平时常用的正则表示式