【H5微信授权】简单实现H5页面微信授权功能,微信开发者工具报错 系统错误,错误码-1,undefined解决办法【详细】

news2024/10/6 2:25:00

前言

最近写到了H5公众号,需要微信授权的功能。
这里记录一下授权的流程和踩了个坑

图片

授权代码执行后会跳转到授权的地方,没有授权的会有确认授权,授权过得会这样,直接自动登录,然后再跳转到中转页
在这里插入图片描述

授权流程

1,前端在自己需要授权的页面调用授权的方法,一般都是刚进页面就调用,方法下面有
2,授权的方法会跳转到一个中转页,同时,跳转的时候微信会自带参数过来下一个页面,参数是问号拼接在地址后面的,当你到了中转页中,你在created中获取前一个页面传来的参数,其中有一个code,这个code是后端要的,他需要这个code去获取用户信息。

授权代码

这里是授权的代码,就是location.href这一句话,至于这个请求,不需要也可以,当然如果你不想前端写死,想要后台穿这三个参数也可以,直接${ }插入进去就行了
这一句话中,你需要改动的就只有三个参数,其他的不用动
参数:
1,appid:填你要授权的H5公众号的appid。记住这里要的是公众号的appid。因为我们做的是公众号的项目,如果你做小程序的,就用小程序的appid。
2,redirect_uri:这里填的是你要跳转的中转页的地址。
3,state:同appid一样,appid填什么,这里复制一份。
4,scope:授权方式

静态授权

snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)
用来获取进入页面的用户的openid的,并且自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。

非静默授权

snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息

methods: {
            //H5授权
            oAuth() {
                axios.post("https://api.xxwwkj.cn/wechat/oauth", {}).then((res) => {
                    location.href =
                        `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3cbfddebd1295021&redirect_uri=https://test.jskwsx.com/model/chat/loading.html&response_type=code&scope=snsapi_userinfo&state=wx3cbfddebd1295021#wechat_redirect`;
                })
            },
            }

中转页

我这里是用的html写的页面啊,如果是vue的自行移动啊,因为是中转页,所以我也没有好好写,可以自己设计一下。
我就写了正在授权中…几个字。这个页面样式自由发挥,唯一的作用就是中转的时候拿到参数code做一些操作

<!DOCTYPE html>
<html>

<head>
    <title>公众号授权</title>
</head>

<body>
    <div id="app">
        <div style="font-size:20px;">
            正在授权中...
        </div>
    </div>
</body>
<script>
    new Vue({
        el: '#app',
        created() {
            let that = this
            //这里是获取上个页面路由传过来的参数,如果是vue直接this.$route拿参数就行,但是这里用的html就需要用上面这种方法拿
            var url = decodeURI(decodeURI(location.search));
            var theRequest = new Object();
            if (url.indexOf("?") != -1) {
                var str = url.substr(1);
                strs = str.split("&");
                for (var i = 0; i < strs.length; i++) {
                    theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
                }
            }
            console.log(theRequest);
            // 这里是请求后端,发拿到的参数,code给后端,后端需要这个code获取用户信息。
            axios.post("https://test.jsrwsz.com/chat/wechat/checkChatWechatUser", {
                code: theRequest.code,
            }).then((res) => {
                console.log('微信授权返回信息', res);
                //后端通过后就跳转一个页面去,你要去哪自己设置
                this.$router.push('https://test.jsrwsz.com/model/chat/gzhChat.html')
            });
        },
    })
</script>
<style scoped>

</style>

</html>

微信开发者工具报错 系统错误,错误码-1,undefined

这是我授权的时候踩的坑,遇到了这个报错。卡了我好一会
在这里插入图片描述

找了很久最后发现造成的原因是:我在写微信授权的那一句代码时,原本我是调用后端的接口,拿数据然后${ }这样放进语句对应的位置的。当时是不报错的。但是我嫌麻烦,所以直接写死了。直接在语句中的参数后面用字符串写了,但是我的字符串带了引号,所以就报了这个错误,其实参数不应该要带引号的。去掉引号后解决了。

就是这个地方,这三个参数不能用引号,有引号就会报系统错误。
在这里插入图片描述

vue代码放到html内缩放问题记录

我在vue内写过H5的这个聊天页面,然后复制到html内,在控制台中切换手机模式查看效果,发现所有元素都变的特别小。没有自动切换为手机模式。
像这样:
在这里插入图片描述
原因:是因为我的html文件的head内没有配置手机端缩放
解决办法:只需要在head中添加这几句就可以了

    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta name="viewport"
        content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />

在这里插入图片描述

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

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

相关文章

204 - 205.表的基本用法

表的基本操作 1.基本概念 1.1数据库和表的关系 每个数据库包含N张表&#xff0c;及表示在库中 1.2 表&#xff08;二维表&#xff09; 行和列组成&#xff0c;可以将复杂的数据保存在简单的表中 表中的每一行就是一条完整的记录 表中的列用于保存每条记录中特点的信息 2.…

【Redis】散列表(Hash)和列表(List)的运用和理解以及Hash和List应用场景对比详解

文章目录一. 散列表(hash)1.1 基本操作1.2 当value字符串的内容是数字时二.列表&#xff08;List&#xff09;2.1 基本操作三.Hash和List的应用场景3.1Hash的应用场景3.2List的应用场景一. 散列表(hash) Redis哈希是字符串类型字段和值的映射表。哈希特别适合存储对象。 Redis中…

mindspore.dataset的map问题

1、创建一个包含transform的自定义类并实例化 2. 类的实现如下&#xff1a; 请注意&#xff1a;在call函数中&#xff0c;我并没有调用init中定义的transform操作。 3. ImageFolder_forPretrain的定义如下。 在划红线的那行&#xff0c;出现错误。 错误信息&#xff1a; 疑问…

【Spark】spark-submit作业提交及参数设定

note 文章目录note一、Spark的常用启动方式1.1 local本地模式1.2 Standalone模式1.3 Spark on Yarn模式二、spark-submit 详细参数说明--master--deploy-mode--class--name--jars--packages--exclude-packages--repositories--py-files--files--conf PROPVALUE--properties-fil…

【趣学算法】Day3 贪心算法——背包问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01; ❤️一名热爱Java的大一学生&#xff0c;希望与各位大佬共同学习进步❤️ &#x1f9d1;个人主页&#xff1a;周小末天天开心 各位大…

tomcat应用部署

目录 tomcta介绍 tomcat安装 每个目录的作用 端口 实验开始 安装&#xff0c;启动MySQL 创建数据库 更改数据库连接 项目导入tomcat和数据库查看 重启tomcat 访问应用 【注意】 tomcta介绍 Tomcat的是完全开源的 Tomcat的是免费的 Tomcat不支持EJB 应用范围&#xff1…

创造一个表格编辑距离指标

这个是我自研的&#xff0c; 与百度PaddleOCR的方式略有不同。 数据的格式&#xff1a; 相当于一个目标检测有两类&#xff0c;分别是table和cell。 在预测值和标签中要先把根据位置关系所有的cell划分到不同的table中。 另外cell标签中还有起止位置 比如 四个数字代表行和…

window10远程桌面控制Ubuntu系统

Windows操作系统作为全球使用最多的个人操作系统&#xff0c;在我们身边随处可见&#xff0c;但放眼各类电子设备的操作系统&#xff0c;windows并不是一家独大&#xff0c;服务器系统大多基于Linux系统开发、手机操作系统几乎都是安卓、更不用说还有苹果的iOS、树莓派、Ubuntu…

【MySQL高级篇】数据库到底是什么?一文带你快速上手MySQL

在学习JavaWeb过程中&#xff0c;数据库学习是不可或缺的。整个JavaWeb体系中&#xff0c;数据库部分用于储存和管理数据&#xff0c;而数据作为网页中非常重要的一部分&#xff0c;自然我们是有必要深入学习数据库的。 推荐学习专栏&#xff1a;Java编程 进阶之路 文章目录1. …

【C语言 数据结构】顺序表的使用

本文借鉴点击跳转 上一篇&#xff1a;线性表的简绍 文章目录顺序表什么是顺序表顺序表的初始化顺序表插入元素顺序表删除元素顺序表 什么是顺序表 顺序表又称顺序存储结构&#xff0c;是线性表的一种&#xff0c;专门存储逻辑关系为“一对一”的数据。 顺序表存储数据的具体…

Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

目录 一.yum——安装软件 二.Vim——文本编辑器 &#xff08;1&#xff09;.命令模式 &#xff08;2&#xff09;.底行模式 &#xff08;3&#xff09;.插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g——编译器 &#xff08;1&#xff09;.gcc如何完成…

客快物流大数据项目(八十三):Kudu的优化

文章目录 Kudu的优化 一、​​​​​​​Kudu关键配置 二、​​​​​​​​​​​​​​Kudu的使用限制 1、​​​​​​​​​​​​​​主键 2、Cells 3、​​​​​​​字段 4、表 5、其他限制 6、​​​​​​​​​​​​​​分区限制 7、扩展建议和限制 8、​…

2- 创建Spring项目—— 方式1

导包&#xff1a; 地址&#xff1a;https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/ 如&#xff1a;包名&#xff1a;spring-5.2.3.RELEASE-dist.zip 将其下libs文件夹下的4个jar包导入&#xff1a; spring-context-5.2.3.RELEASE.jar、…

物联网ARM开发-3协议-单总线应用红外遥控

前言&#xff1a;单总线类传感器-红外遥控的实现 目录 一、红外遥控工作原理讲解 1、光的基础知识 2、红外通信 3、红外NEC协议详解 二、红外遥控实例讲解 1、实验目的&#xff1a;按下遥控按键&#xff0c;主机通过红外接收器接收到信号并解码&#xff0c;识别出按键的…

大学生计算机相关专业有什么血泪建议吗?

工作多年后才发现大学期间错过太多&#xff01;&#xff01;&#xff01;给正在攻读CS的你&#xff0c;以下建议&#xff1a; 神级编程网站&#xff0c;堪称程序员的充电站&#xff0c;我给你找好了不能错过_程序员编程指南的博客-CSDN博客_程序员充电网站 大的课程很多&…

LA-PEG-NH2,Lipoic acid-PEG-Amine,硫辛酸PEG氨基用于量子点表面

表面反应性聚乙二醇聚乙二醇化试剂LA-PEG-NH2&#xff0c;又名Lipoic acid-PEG-Amine其中文名为硫辛酸-聚乙二醇-氨基。所属分类为Amine PEG Lipoic acid&#xff08;LA&#xff09;PEG。 该科研试剂Lipoic acid-PEG-Amine的分子量均可定制有&#xff1a;&#xff08;5000、20…

uboot移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口&#xff08;串口0~3&#xff09;&#xff0c;并且用DB9接口引出了2个串口&#xff0c;分别是串口0和串口2。其中靠近网口的是串口0&#xff0c;远离网口…

java毕业设计——基于java+java-swing的泡泡堂网络游戏设计与实现(毕业论文+程序源码)——泡泡堂网络游戏

基于javajava-swing的泡泡堂网络游戏设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javajava-swing的泡泡堂网络游戏设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于javajava-…

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制

多旋翼无人机仿真 rotors_simulator&#xff1a;基于PID控制器的位置控制---高度控制前言构建软件框架编译 cpp构建代码main函数构建构建类的定义订阅无人机里程计信息垂直位置控制串级P控制收敛结果收敛过程串级PID控制前言 无人机&#xff08;Unmanned Aerial Vehicle&#…

Oracle中分割字符串的方法

Oracle中分割字符串的方法1. 使用 regexp_substr() 函数1.1 方式11.2 方式22. 自定义函数2.1 自定义类型 table2.2 自定义函数2.2.1 自定义函数2.2.2 效果如下&#xff1a;2.3 Oracle查看&#xff1c;Collection&#xff1e; 类型数据3.1. 使用 regexp_substr() 函数 1.1 方式…