基于微信公众号开发h5的前端流程

1.首先公众号进行配置,必须要https域名

还有个txt文件,有弹框提示需要下载放在服务器上

前端处理code的代码封装

// 微信公众号授权
export function wxAuthorize(calback) {// 非静默授权,第一次有弹框 这里的回调页面就是放在服务器上微信会跳转回来反值如openid的页面let redirect_uri =config.redirect_uri || window.location.host; // 重定向地址console.log(redirect_uri, '重定向地址')let appid = config.appid  // 公众号appidlet code = getUrlCode().code; // 截取code// 获取之前的codelet oldCode = uni.getStorageSync('wechatCode')if (code == null || code === '' || code == 'undefined' || code == oldCode) {// 如果没有code,就去请求获取codeconsole.log('当前没有code,进入授权页面')let uri = encodeURIComponent(redirect_uri)// 设置旧的code为0,避免死循环uni.setStorageSync('wechatCode', 0)const urll =`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=State#wechat_redirect`console.log(urll, '------------urll-------------------');window.location.href = urll} else {console.log('存在code,使用code换取用户信息',code)// 保存最新codeuni.setStorageSync('wechatCode', code)wxCallback(`?code=${code}&state=123`).then(res => {// 成功data为tokencalback && calback({success: true,data:res})}).catch((err) => {if(err.code == '9997'){ //code失效重新进入window.location.reload()}else if(err.code == '9999'){ // 手机号未绑定calback && calback(err)}})}
}export function getUrlCode() {// 截取url中的code方法var url = location.search;// this.winUrl = url;var theRequest = new Object();if (url.indexOf('?') != -1) {var str = url.substr(1);var strs = str.split('&');for (var i = 0; i < strs.length; i++) {theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];}}console.log(theRequest,'spdspdop')return theRequest;
}export function getParams(url) {const searchParams = new URLSearchParams(url.split("?")[1]);const params = {};for (const [key, value] of searchParams.entries()) {params[key] = value;}return params;
}

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

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

相关文章

c语言连接两个字符串

在C语言中&#xff0c;连接两个字符串可以使用 strcat 函数。这个函数将一个字符串复制到另一个字符串的末尾。使用 strcat 函数之前&#xff0c;需要确保目标字符串有足够的空间来容纳源字符串&#xff0c;否则可能会导致缓冲区溢出。 下面是一个使用 strcat 函数连接两个字符…

外贸推广渠道有哪些

外贸推广渠道多种多样&#xff0c;每一种都有其特定的优势和适用场景。以下是一些常见的外贸推广渠道&#xff0c;它们被广泛用于吸引国际客户、增加品牌曝光度和促进销售。 外贸B2B平台推广&#xff1a; 阿里巴巴国际站&#xff1a;作为全球知名的B2B平台&#xff0c;汇聚了大…

MFC工控项目实例之五CFile类读写系统参数

承接专栏《MFC工控项目实例之四在调试目录下创建指定文件夹》 实时保存输入的iPlotX坐标轴最小值、最大值到CFG.PAR文件&#xff0c;打开界面从CFG.PAR文件中实时读取保存的最小值、最大值在编辑框中显示。 1、SEAL_PRESSURE.h中添加代码 class CSEAL_PRESSUREApp : public CW…

我主编的电子技术实验手册(07)——串联电路

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…

大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程

最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 测试环境&#xff1a;apachePHP7.3MySQL5.7 源码免费下载地址抄笔记 (chaobiji.cn)

Web前端网页滚动效果:深度解析与创意实践

Web前端网页滚动效果&#xff1a;深度解析与创意实践 在Web前端设计中&#xff0c;滚动效果作为一种交互方式&#xff0c;不仅影响着用户体验&#xff0c;更在某种程度上定义了网页的视觉风格和动态特性。本文将深入剖析Web前端网页滚动效果的四个方面、五个方面、六个方面和七…

装饰器模式构建IO流体系

装饰器模式简介 装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对现有类的包装和装饰&#xff0c;使新的类具有更强的功能。 装饰器模式 class Iphone {private String name;public Iphone(String name){this.name name;}public void show(){System.out.pri…

C++前期概念(重)

目录 命名空间 命名空间定义 1. 正常的命名空间定义 2. 命名空间可以嵌套 3.头文件中的合并 命名空间使用 命名空间的使用有三种方式&#xff1a; 1:加命名空间名称及作用域限定符&#xff08;::&#xff09; 2:用using将命名空间中某个成员引入 3:使用using namespa…

MySql 数据库、表常用语句

数据库 查看当前所有数据库 mysql> show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | --------------------创建一个新数据库 创建一个…

代码随想录算法训练营第六十二天 | 739.每日温度、496.下一个更大元素 I、503.下一个更大元素II

739.每日温度 文字讲解&#xff1a;代码随想录 视频讲解&#xff1a;单调栈&#xff0c;你该了解的&#xff0c;这里都讲了&#xff01;LeetCode:739.每日温度_哔哩哔哩_bilibili 解题思路 思路一&#xff1a;暴力双循环 O&#xff08;n^2&#xff09; 思路二&#xff1a;单…

ICML24麻省理工提出使用更少的条件独立性测试来发现因果关系新方法

【摘要】众多科学领域的核心问题围绕着理解因果关系这一基本问题。然而,大多数基于约束的因果发现算法,包括广受欢迎的PC算法,通常会进行指数级数量的条件独立性(CI)测试,在各种应用中造成局限。为解决这一问题,我们的工作重点是表征在减少CI测试数量的情况下,可以了解潜在因果…

js 数组有哪些方法

JavaScript 数组提供了许多内置方法来操作和处理数组。以下是一些常用的数组方法&#xff1a; 创建和操作数组的方法 Array.from()&#xff1a;从类数组对象或可迭代对象创建一个新的数组实例。 let arr Array.from(hello); // [h, e, l, l, o]Array.isArray()&#xff1a;判…

Explain Python Machine Learning Models with SHAP Library

Explain Python Machine Learning Models with SHAP Library – Minimatech &#xff08;能翻墙直接看原文&#xff09; Explain Python Machine Learning Models with SHAP Library 11 September 2021Muhammad FawiMachine Learning Using SHapley Additive exPlainations …

用户管理相关命令(修改sudoer文件添加用户权限)visudo: /etc/sudoers: 权限不够

1.useradd <用户名>&#xff1a;用来新建一个用户&#xff08;-m&#xff1a;创建用户的家目录 -s&#xff1a;指定/bin/bash&#xff09; 2.userdel <用户名>&#xff1a;删除一个用户&#xff0c;还会存在家目录&#xff08;-r&#xff1a;删除用户的同时&…

jeecg在线表单开发模式保存表时报The jdbcUrl is Null, Cannot read database type

报错信息如图 原因分析 使用jeecg框架 数据库使用的是DM数据库&#xff0c;在JeecgSystemApplication中&#xff0c;使用了注解过滤DruidDataSourceAutoConfigure&#xff0c;配置文件使用的是多数据源的方式 会出现这种情况 源码分析 getOnlineDataBaseConfig方法的dataBa…

unity text根据文本内容自动设置高度

我们经常会遇到需要根据文字数量动态修改文本框高度的需求&#xff0c;我们可以使用文本的行数*每行的高度来计算文本框的高度&#xff0c;伪代码如下&#xff1a; int oneLineHight 50;// 每行的像素高度 private void ResetTextHight(string str) {//设置文字内容ShowText.…

Gson的常见用法

一引入依赖 <!-- json解析的工具包 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> <!-- 主要为了代码简洁和日志打印 --> <…

怎么找抖音视频素材?在哪里找爆款热门的素材呢?

在短视频时代&#xff0c;拍摄和分享短视频已经成为一种潮流。但是&#xff0c;许多人都会面临一个问题&#xff0c;那就是——视频素材从哪里来&#xff1f;今天&#xff0c;我将为大家介绍几个优质的网站&#xff0c;让你的视频素材不再愁。 蛙学府&#xff1a;https://www.…

STM32项目分享:智慧农业(机智云)系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

C++ 54 之 继承中同名的静态成员处理

#include <iostream> using namespace std;// 父类 class Base07{ public:static int m_a; // 静态成员&#xff0c;类内定义static void fun(){cout << "Base中的fun"<< endl;}static void fun(int a){cout << "Base中的fun(int a)&qu…