uniApp H5使用JSSDK对接微信公众号问题

news2024/9/24 18:28:05

问题1

uni-app开发微信应用引用JSSDK后 wx.agentConfig is not a function (或 wx.config is not a function)

原因:
因为uni-app自动集成了 微信的 jweixin.js
所以通过
在浏览器打开 然后保存下来js 文件
然后在项目中通过 import 引入就可以了

// const jWeixin = require('jweixin-module');
import jWeixin from './weixin/index.js'
console.log('-------jWeixin----', jWeixin)
import wxx from './jwxwork-1.0.0.js'

通过这种方式引入的jwxwork-1.0.0.js 会有 下面这个报错
cannot read title of undefined

只要将文件中 第一个 this 换成 windows 就可以了

问题2

config:fail,invalid signature
见名知意,这个就是signature前面错误

import lombok.extern.slf4j.Slf4j;
import java.security.MessageDigest;
import java.util.Formatter;/**
 * 签名工具类
 *
 * @className: SignatureUtil
 * @author: rosszhang
 * @date: 2024/1/19 17:42
 */
@Slf4j
public class SignatureUtil {private static String byteToHex(final byte[] hash) {
        Formatter formatter = new Formatter();
        for (byte b : hash) {
            formatter.format("%02x", b);
        }
        String result = formatter.toString();
        formatter.close();
        return result;
    }public static String signature(String sign) {
        String signature = "";
        try {
            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
            crypt.reset();
            crypt.update(sign.getBytes("UTF-8"));
            signature = byteToHex(crypt.digest());
        } catch (Exception e) {
            log.error("签名获取失败:{}", e.getMessage(), e);
        }
        return signature;
    }public static String buildMessage(String jsapiTicket, String nonceStr, String timestamp, String url) {
        return "jsapi_ticket=" + jsapiTicket +
                "&noncestr=" + nonceStr +
                "&timestamp=" + timestamp +
                "&url=" + url;
    }
}

用法:

String signStr = SignatureUtil.buildMessage(jsapiTicket,nonceStr,timestamp,requestUrl);
String signature = SignatureUtil.signature(signStr);

问题3

config:fail,invalid url domain

这个问题就是域名的问题

在<公众号设置>–<基本设置>–中添加本地ip映射的域名
注:问题4解决办法也适用

问题4

scanQRCode:fail, the permission value is offline verifying

原因:
1、确认config的jsApiList参数包含了这个JSAPI
2、确认公众号白名单/js接口安全域名
3、确认后台是否成功返回签名
4、我们一般测试的时候都是用的127.0.0.1/localhost/IP地址,此时生成的的签名,在访问的时候都会提示invalid url domain.
5、公众号设置的JS接口安全域名域名不匹配,
解决:
在<公众号设置>–<基本设置>–<JS接口安全域名>中添加本地ip映射的域名;
其次我们可以把127.0.0.1/localhost/IP做一个映射(这是在win系统下);
修改 host 配置,进行公众号配置的安全域名与本机地址IP映射;
计算机host文件作用

hosts就相当于本地的一个dns缓存,不用访问远程的DNS解析服务器,加快了网站打开速度。这样当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。例如:访问www.baidu.com
,计算机请求远程DNS域名解析服务器,查找到百度真实Ip为202.108.22.5进行访问。

文件位置 C:\Windows\System32\drivers\etc,直接复制打开
在这里插入图片描述
在host文件下添加下面两个
在这里插入图片描述
回到微信开发者工具,在地址栏将http://localhost:8080替换为配置的域名,如:http://ross.zhang.com:8080/#/pages/public/login
注意:此处有可能会报错:Invalid Host header;
此时我们只需要在UNIAPP的h5部分添加

"h5" : {
    // 添加这个就可以 
    "devServer" : {
      "disableHostCheck":true
    },
    "title" : "智慧商城",
    "template" : "main.html",
    "router" : {
        "base" : "./"
    } 
},

此时我们就可以正常访问了,除了config:fail,invalid url domain这个问题。因为我用的是一个自己随便写的域名地址,所以这个问题就过不去啦。大家可以在改hosts的时候,直接使用JS接口安全域名,或者下面的子域名。这样就完美的解决调试的问题了。
验证结果:

<template>
  <view>
    <button class="confirm-btn" open-type="toWxLogin" withCredentials="true" lang="zh_CN"
      @click="toWxLogin">当前位置</button>
  </view>
</template>

H5页面我们放了一个按钮,然后调用this.$wechat.getLocation()获取位置地址

toWxLogin() {
    console.log('-------toWxLogin---------')
    this.$wechat.getLocation()
        // 选择图片
        // this.$wechat.chooseImage()
        // 分享
    // this.$wechat.updateAppMessageShareData({
    //   title: '我的分享测试', // 分享标题
    //   desc: '分享的内容', // 分享描述
    //   link: 'https://mall.ross.com/h5/index.html', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    //   imgUrl: '', // 分享图标
    //   success: function() {
    //     toast("分享成功")
    //   }
    // })
        // 二维码
    // this.$wechat.scanQRCode()
  }

结果展示
在这里插入图片描述

下面这个是我的个人公共号 只会写Bug的程序猿,大家可以关注一下,一键三连。相互交流学习。
在这里插入图片描述

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

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

相关文章

C++继承(万字详!!)

文章目录 继承的概念及定义继承的概念继承定义 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承菱形继承菱形虚拟继承 继承的总结和反思笔试面试题 继承的概念及定义 继承的概念 继承(inheritance) 机制是面…

【Linux】yum

个人主页 &#xff1a; zxctsclrjjjcph 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 yum 1. 什么是yum&#xff1f;2. Linux系统(Centos)的生态3. yum的相关操作4. yum的本地配置5. 如何安装软件 1. 什么是yum&#xff1f; yum是一个软件下载安装的一个客户端&a…

Qt/QML编程之路:QWidget和QOBJECT的不同之处(37)

开始使用Qt的工程师&#xff0c;要有个思想准备&#xff0c;标准的Application或者说Windows窗口类的工程和QML是不同的&#xff0c;很多控件在QML里面是不支持的。要了解QObject、QWidget、QMainWindow几个的不同。为何我会遇到这个问题呢&#xff1f;因为在做OpenGL想实现3D效…

Spark流式读取文件数据

流式读取文件数据 from pyspark.sql import SparkSession ss SparkSession.builder.getOrCreate() # todo 注意1&#xff1a;流式读取目录下的文件 --》一定一定要是目录&#xff0c;不是具体的文件&#xff0c;# 目录下产生新文件会进行读取# todo 注意点2&#xff1…

知识图谱的演进

目录 前言1 Memex&#xff1a;信息存储的雏形2 超文本和Web&#xff1a;链接的崛起3 Semantic Web&#xff1a;从文本链接到数据链接4 Linked Big Data&#xff1a;规范化的语义表示5 谷歌的知识图谱搜索引擎6 多种语义网/知识图谱项目结语 前言 随着人工智能和互联网的飞速发…

02.Spotless代码格式化工具

Spotless代码格式化工具 1.为什么需要 在一些大型项目或开源项目&#xff0c;由于开发人员太多&#xff0c;导致各个代码格式不统一。会让整体项目的代码可读性变差&#xff0c;那么如何可以统一代码格式呢&#xff1f; 使用Spotless就可以完成 2.是什么 Spotless 是支持多…

4456系列数字荧光示波器

4456系列数字荧光示波器 简述&#xff1a; 4456系列数字荧光示波器具有6个产品型号&#xff0c;带宽350MHz~1GHz&#xff0c;最高采样率5GSa/s&#xff0c;最大存储深度500Mpts/CH&#xff0c;最快波形捕获率100万个波形/秒&#xff0c;独创的Any Acquire Phosphor技术&#xf…

Docker安装MinIO以及Spring Boot 整合 MinIO 实现分布式文件服务

什么是MinIO&#xff1f; MinIO 是一个开源的对象存储服务器&#xff0c;旨在通过简化分布式存储架构的方式&#xff0c;提供高性能、高可用性的存储解决方案。它兼容 Amazon S3 API&#xff0c;因此可以无缝地替代或与 Amazon S3 兼容的应用程序集成。 下面是一些关于 MinIO…

LeetCode-67/104/1232/136

1.二进制求和&#xff08;67&#xff09; 题目描述&#xff1a; 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 思路&#xff1a; 第一种方法就是直接将字符串转为二进制数&#xff0c;然后相加返回结果&#xff0c;但是提交未通过&#xff…

(二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真

一、创建工作空间 mkdir catkin_ws cd catkin_ws mkdir src cd src 二、下载wpr_simulation源码 git clone https://github.com/6-robot/wpr_simulation.git 三、编译 ~/catkin_make 目录下catkin_makesource devel/setup.bash 四、运行 roslaunch wpr_simulation wpb_s…

SPI 动态服务发现机制

SPI&#xff08;Service Provier Interface&#xff09;是一种服务发现机制&#xff0c;通过ClassPath下的META—INF/services文件查找文件&#xff0c;自动加载文件中定义的类&#xff0c;再调用forName加载&#xff1b; spi可以很灵活的让接口和实现分离&#xff0c; 让API提…

Node+Express编写接口---前端

前端页面 vue_node_admin: 第一个以node后端,vue为前端的后台管理项目https://gitee.com/ah-ah-bao/vue_node_admin.git

SpringBoot 项目中后端实现跨域的5种方式!!!

文章目录 SpringBoot 项目中后端实现跨域的5种方式&#xff01;&#xff01;&#xff01;一、为什么会出现跨域问题二、什么是跨域三、非同源限制四、Java后端 实现 CORS 跨域请求的方式1、返回新的 CorsFilter(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、使用注解 (局部跨…

485.最大连续1的个数

前言 这两天突然发现力扣上还是有我能写出来的题的&#xff0c;虽说都是简单级别的&#xff08;以及一道中等的题&#xff09;&#xff0c;但是能写出来力扣真的太开心了&#xff0c;&#xff08;大佬把我这段话当个玩笑就行了&#xff09;&#xff0c;于是乎&#xff0c;我觉…

【Docker】实战多阶段构建 Laravel 镜像

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本&#xff0c;各个版本的文件结构可能会有差异&#xff0c;请根据实际自行修改。 准备 新…

【C++】string的基本使用

从这篇博客开始&#xff0c;我们的C部分就进入到了STL&#xff0c;STL的出现可以说是C发展历史上非常关键的一步&#xff0c;自此C和C语言有了较为明显的差别。那么什么是STL呢&#xff1f; 后来不断的演化&#xff0c;发展成了知名的两个版本&#xff0c;一个叫做P.J.版本&am…

【GitHub项目推荐--推荐 5 个炫炫炫的可视化项目】【转载】

数据可视化就是将抽象的数据通过视觉的方式进行展示&#xff0c;能让用户直观的看到数据中蕴含的信息和规律。 本篇文章&#xff0c;整理了 5 个可视化开源项目&#xff0c;其中包括可视化制作低代码平台、大屏可视化、地图可视化、热图、图标可视化等等。 00. 数据大屏可视化…

gh0st远程控制——客户端界面编写(二)

● 补充小知识&#xff1a;枚举类型的使用 每个控件&#xff08;比如列表&#xff09;都对应一个自己的唯一的变量 使用枚举类型可以将变量名与编号进行绑定&#xff0c;以后程序需要扩展的时候&#xff0c;只需要在定义枚举变量的位置重新修改编号就可以了&#xff0c;这样全…

Windows自带分屏使用-窗口贴靠

0.介绍 Windows电脑自带的分屏功能叫做“窗口贴靠”&#xff0c;可以让您同时查看和操作多个应用程序窗口&#xff0c;提高我们的工作效率在屏幕展示上,没有额外显示器的情况下,可以设置分屏来进行展示分屏的数量,目前为止,windows系统上分屏的数量最多为4个,win7,win10,win11…

DolphinDB 与盈米基金达成战略合作,打造领先的资管机构投顾解决方案

1月16日上午&#xff0c;DolphinDB 与盈米基金在上海签署战略合作协议&#xff0c;共同开启专业资管投顾投研合作新篇章。 DolphinDB 联合创始人、COO 初阳春与盈米基金副总裁、研究院院长杨媛春出席仪式&#xff0c;并代表双方完成签约。 打造市场领先的资管机构投顾服务 盈…