H5获取微信openid封装方法

news2025/2/5 14:50:19

H5获取微信openid封装方法

  • 目录
    • 1、前置配置条件
    • 2、封装并新建getOpenid.js文件
        • 2.1:处理code方法
        • 2.2:第一次获取到openid后,再次进入无需再次获取;
        • 2.3:页面调用方法
    • 3、往期回顾
      • 总结:

目录


接到需求,在H5页面中要调起微信用户的openid,传给接口,于是结合实际项目情况,对获取openid方法封装一套公共方法,便于大家使用,配置相应参数,开箱即用!


1、前置配置条件


1、传送门:网页授权 | 微信开发文档
2、确保公众号已认证
3、确保公众号后台设置安全域名
【公众号设置】=》【功能设置】=》【JS接口安全域名】&【网页授权域名】
4、在满足条件的允许下,进行下一步

2、封装并新建getOpenid.js文件

实现方法:(开箱即用)
2.1:处理code方法
2.2:第一次获取到openid后,再次进入无需再次获取;
2.3:页面调用方法

2.1:处理code方法

定义方法 getUrlCodeParam 处理code

	// 获取code方法 在js中不建议使用route.query.code方式
	let getUrlCodeParam = (name) => {
	  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
	}
2.2:第一次获取到openid后,再次进入无需再次获取;

获取openid方法

export let getOpenId = async () => {
  return new Promise(async (resolve, reject) => {
    console.log("初始化");
    let openid = "";
    let ua = navigator.userAgent.toLowerCase();
    // 判断是否在微信内部调用 :/micromessenger/.test(ua)
    if (/micromessenger/.test(ua)) {
    // 判断本地是否获取过openid:(localStorage.getItem("wx_Openid_2024"))
      if (!localStorage.getItem("wx_Openid_2024")) {
        console.log("微信内部环境");
        // 这里是通过getUrlCodeParam('code')方法处理ulr中的 code
        const code = getUrlCodeParam('code')
        // 这里是有code走这里
        if (code) {
          // 我们这里处理的方法是将code传给接口,接口返回openid
          const res = await reqxxxxxxx(code);
          openid = res.data ? res.data.openid : "";
          // 拿到openid后将openid存到本地
          localStorage.setItem("wx_Openid_2024", openid ? openid : "");
        } else {
          // 如果没用code 我们就走这里
          let redirect_url = encodeURIComponent(window.location.href);
          // 这里是定义的appid,可以通过配置获取,也可以写死在这里;
          let app_id = "xxxxxxxxx";
          // 这里是默认方法
          let url =
            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
            app_id +
            "&redirect_uri=" +
            redirect_url +
            "&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
          window.location.href = url;
        }
        // 这块返回了openid
        return resolve(openid ? openid : "");
      } else {
      // 判断接口有openid就直接获取本地的
        openid = localStorage.getItem("wx_Openid_2024");
        return resolve(openid ? openid : "");
      }
    } else {
      console.log("不在微信环境内");
      return resolve("");
    }
  });
};
2.3:页面调用方法

页面调用,进入页面时在created()中调用方法

// 引入方法
import {getOpenId} from '@/utils/index'

// 调用
created () {
   getOpenId().then(res => {
    console.log(res,'openid')
  })
}

以上就是本篇文章的所有内容了~~~



3、往期回顾


— 获取源码接着往下看!—

vue3 + TS + vite 搭建中后台管理系统(完整项目)
vue3 + JS + vant 搭建移动端H5项目(完整项目)
手把手教 Vue3.2+Vite+Echarts 5 绘制3D线条效果中国地图



总结:

前端路上 | 所知甚少,唯善学。
各位小伙伴有什么疑问,欢迎留言探讨。

— 关注我:前端路上不迷路 —




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

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

相关文章

腾讯EdgeOne产品测评体验—Web安全的攻与防:云端防护一体化

目录 简介接入准备EdgeOne购买及接入服务器环境配置添加测试站点关闭防护 安全性能测试XSS攻击sql注入 站点加速测试代码测试通过在线工具对比测试Ping检测tcping网站测速 HTTPS证书 操作步骤优点 总结EdgeOne的优缺点 简介 EdgeOne,作为腾讯云推出的全新CDN解决方…

使用icpc tool进行滚榜操作

前言 参加ACM的同学都知道,比赛非常有趣的环节就是赛后的滚榜环节,所以为了一个比赛的完整性,自己办比赛时也想要加入滚榜的操作,经过一段时间的研究学习,已经可以将滚榜程序与domjudege程序成功完成融合,…

node.jd版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 进入命令控制行窗口,输入where node,查看本地…

CentOS7.9下载及安装教程

1. 下载CentOS7.9 CentOS用的最多的是7.6,7.9是7里面最新的,至于8以上的版本听说没有维护和更新了,这里以7.9为例。 下载:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 2. 新建虚拟机 新建虚拟机–>典型(推荐…

【iOS开发】(一)2024 从一无所有开始,到ios开发(react Native)

​ 2024 从一无所有开始,到ios开发(react Native) 目录标题 1 工具简介2 基础环境搭建1 安装 brew2 安装 Node.js3 安装 Yarn4 安装 React Native 脚手架 3 ios环境搭建4创建并启动一个app 在这里插入图片描述 1 工具简介 Homebrew (brew)&a…

Window安装Redis

安装Redis-Service 下载并安装最新版Redis-windows : https://github.com/redis-windows/redis-windows 安装Redis-Manager Another Redis Desktop Manager 是一款优秀Redis桌面(GUI)管理客户端 参考链接 https://redis.io/

Python | Leetcode Python题解之第29题两数相除

题目: 题解: class Solution:def divide(self, dividend: int, divisor: int) -> int:INT_MIN, INT_MAX -2**31, 2**31 - 1# 考虑被除数为最小值的情况if dividend INT_MIN:if divisor 1:return INT_MINif divisor -1:return INT_MAX# 考虑除数为…

SAP SD学习笔记05 - SD中的一括处理(集中处理),出荷和请求的冻结(替代实现承认功能)

上一章讲了SD的重要概念,比如出荷Plant(交货工厂),出荷Point(装运点),输送计划,品目的可用性检查,一括纳入/分割纳入,仓库管理等。 SAP SD学习笔记04 - 出荷…

如何用个人电脑搭建一台本地服务器,并部署项目到服务器详细教程

服务器是一种高性能计算机,作为网络的节点,它存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。与普通计算机相比,服务器具有高速CPU运算能力、长时间可靠运行、强大I/O外部数据吞吐能力以及更好的扩展性。 服务器的主要…

Python教程:备份你的文件夹里面的数据

1.完全备份是最基本的备份类型,它涉及复制所有选定的数据到备份位置。无论文件是否自上次备份以来发生了变化,所有文件都会被复制。这种备份方式简单直接,确保了备份存储的数据总是最新的。 完全备份是通过递归复制源文件夹中的所有文件和子…

Nginx日志格式化和追踪

背景 Nginx是一款功能强大的Web服务器,对于网络环境中的日志记录和配置至关重要。定制化Nginx日志格式可以帮助管理员更好地监控服务器性能、分析用户行为并做出相应优化。在本文中,我们将深入探讨Nginx日志格式的高级定制化策略,包括理解基…

SiLM5350系列带米勒钳位的单通道隔离驱动器 助力汽车与工业应用实现稳定与高效的解决方案

带米勒钳位的隔离驱动SiLM5350系列 单通道 30V,10A 带米勒钳位的隔离驱动 具有驱动电流更大、传输延时更低、抗干扰能力更强、封装体积更小等优势, 为提高电源转换效率、安全性和可靠性提供理想之选。 SiLM5350系列产品描述: SiLM5350系列是单通道隔离驱…

LeetCode 349.两个数组的交集(HashSet的使用)

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2]示例 2: 输入:nums1 …

默认图表太丑!?快来看看这个好看的绘图主题吧~~

有很多小伙伴经常私信给小编,问自己绘制的图表为啥没小编绘制的精美? 听到这句话,小编老脸一红,还是比较惭愧的,因为并不是像小伙伴说的那样对每一个图表元素都进行定制化涉及操作,是借助优秀的“第三方工具…

视频编辑软件pitivi基本功之安装篇

视频编辑软件pitivi基本功之安装篇 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 应用程序——工具——终端,切换到root用户 ruhonglocalhost:~> su - 密码: localhost:~ # zypper search pitivi localhost:~ # zypper install pitivi ruhonglocalho…

linux学习:进程通信(管道+信号)

目录 管道 无名管道(PIPE) 特征 例子,通过pipe向父进程发送一段数据 ​编辑 有名管道(FIFO) 特征 例子 注意 信号 特征 api 例子1 例子2 例子3 例子4 信号相关的内核数据结构 管道 管道分为无名管道…

应对电力行业勒索攻击,看亚信安全防勒索方案的3大技战法

来源:中国电力大数据创新联盟会刊 近年来,国际、国内的勒索事件频发,勒索已经成为具备国家背景的团伙组织危害行为,各关基单位需要在原有的实战化安全攻防的基础之上,专项针对数据勒索进行防护体系建设,建立…

头文件修改触发重新构建依赖于此的文件 gcc 标志的使用 -MF -MD -MP

1,文件布局 2,头文件重构建 Makefile TARGET : libicarithmetic.soDEBUG_FLAGS : -O3 HEADER_FLAGS : -MD -MF $*.d -MP all: $(TARGET)SRC_C : \src/add.c \src/circ.c \src/div.c \src/mul.c \src/sub.cOBJ_C : $(SRC_C:.c.c.o) DEP_C : $(SRC_C:.c.…

单细胞分析|映射和注释查询数据集

reference映射简介 在本文中,我们首先构建一个reference,然后演示如何利用该reference来注释新的查询数据集。生成后,该reference可用于通过cell类型标签传输和将查询cell投影到reference UMAP 等任务来分析其他查询数据集。值得注意的是&am…

腾讯云幻兽帕鲁一键开服教程

腾讯云作为领先的云计算服务提供商,为广大用户提供了便捷、高效的游戏服务器搭建解决方案。其中,幻兽帕鲁一键开服功能,更是让游戏开服变得简单易懂。本文将为大家详细介绍腾讯云幻兽帕鲁一键开服的步骤,帮助大家轻松搭建自己的游…