微信公众号H5利用JS-SDK中的开放标签wx-open-launch-weapp跳转第三方小程序

2023-11-02

场景:在微信公众号的h5页面中有这样一个需求,需要跳转到第三方小程序,我这里主要记录一下使用JS-SDK中的开放标签wx-open-launch-weapp来实现跳转,以及我在需求中遇到的一些问题,以及怎么解决的。我是使用的HBuilder写的h5公众号

1、要使用JS-SDK里面的东西需要安装依赖 jweixin-module

npm i jweixin-module --save

2、通过 config 配置权限并申请所需开放标签,新建文件jssdk.js

import jweixin from 'jweixin-module'

export default {
	initJssdk: function() {
		//获取当前url然后传递给后台获取授权和签名信息  这里需要使用encodeURIComponent加密
		let url = encodeURIComponent(location.href.split('#')[0])
		console.info("url",url)
        //发送请求获取相关配置信息
		request({
			url: ``,//后端的请求地址
			param:{
				url,
			},
			method: '',//请求方式
			success: res => {
				jweixin.config({
						debug: false, // 调试时可开启,可以看到js-sdk返回的信息
						appId, // appId
						timestamp: res.data.timestamp, // 必填,生成签名的时间戳
						nonceStr:  res.data.nonceStr, // 必填,生成签名的随机串
						signature: res.data.signature, //必填,签名
						jsApiList: ['chooseImage','previewImage'], // 必填,随意一个接口即可
						openTagList: ['wx-open-launch-weapp'], // 填入打开小程序的开放标签名wx-open-launch-weapp
					})
			}
		});
	},
    //如果要使用到其它的api也可以添加到该文件中
}

3、在main.js中将jssdk.js中的方法挂载在vue原型上

import jwx  from '@/common/js/jssdk.js'
Vue.prototype.$jwx=jwx

4、在需要使用标签的vue文件的created生命周期中调用初始化的方法

created() {
			this.$jwx.initJssdk()
		}

5、在该页面使用

<wx-open-launch-weapp
	 id="launch-btn"
	 username=""
	 path=""
	 >
		<script type="text/wxtag-template">
			<style>
				.itemBtn{
					padding: 5px 0;
					display: flex;
					flex-direction: column;
					align-items: center;
					}
				.prize-img{
					width: 32px;
					height: 32px;
					border-radius: 32px;
					}
				.text{
					font-size: 12px; 
					color: #c31362;
					margin-top: 5px;
					white-space: nowrap;
					}
			</style>
			<div class='itemBtn'>
				<div class="prize-img">
					<img src="{{ tft.tftphoto}}" class="prize-img">
				</div>
			    <div class="text">{{tft.text}}</div>
			</div>
		</script>
</wx-open-launch-weapp>

注意标签中绑定vue页面中数据的方式

data(){
    return {
        tft:{
				tftphoto:'https://.....',//注意这里要使用图片的网络绝对地址,不然找不到图片
				text:'XXX'
			},
    }
}

总结在这里面遇到的问题:

        1、这个一定要使用真机测试,才能看到效果,不管是在浏览器端还是在微信开发者工具中都是看不到效果的。

        2、在浏览器中打开报错Unknown custom element: \<wx-open-launch-weapp> - did you register the component correctly。在maim.js中添加下面这一行代码

Vue.config.ignoredElements = [...Vue.config.ignoredElements, 'wx-open-launch-weapp']

        3、前端给的url一定是#之前的部分动态获取,包括参数部分,并且要使用 encodeURIComponent包裹。

        4、确保前端传递的url正确的情况下,报错{realAuthUrl: "[https://xxx, https://xxx]", errMsg: "config:invalid signature"}无效的签名,需要后端接收到url还原为原本的url格式进行请求微信接口

        5、如果在标签中使用到了图片,要使用图片的网络地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信公众号H5利用JS-SDK中的开放标签wx-open-launch-weapp跳转第三方小程序 的相关文章

  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • 单值或常量值时在 x 轴上绘制的样条图 - highchart

    while using the older version of highchart 2 1 6 if a plot had only one value or a series of same values it would plot a
  • React 渲染中的不变违规或 React 中迭代和返回的正确方法

    我在 React 渲染中遇到了持续存在的问题 这段代码 jsx React DOM var AnswerRows React createClass componentDidMount function render function th
  • 在javascript中使用“return !0”有什么意义吗?

    如果您转到谷歌结果页面并运行rwt toString 你会看到这个函数的返回调用是 return 0 我想不出任何理由为什么这不会总是如此true 这只是一个简写吗true 还是还有更多事情发生 总是如此 但下载需要 2 个字节 0是 2
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • HTML5 服务器端事件:EventSource 与包装的 WebSocket

    HTML5 服务器发送事件 SSE API 是否只是 HTML5 WebSocket 之上的受限制的 基于事件的 API 在我看来 一个EventSource只是一个WebSocket that Cannot send data 使用tex
  • Chrome SuppressDifferentOriginSubframeJSDialogs 使用 JS 设置覆盖?

    Chrome 开发团队显然刚刚推出了一项名为 SuppressDifferentOriginSubframeJSDialogs 的新 功能 这使得默认情况下不会显示来自与父级不同域上的 iFrame 的警报 确认框 https www ch
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • 从未定义解构时避免错误

    可以说我有这个代码 const x y point Babel 会将其变成 var point point x point x y point y 这很好 但是如果点未定义怎么办 现在我得到一个错误 Cannot read property
  • 是否可以覆盖 javaScript 原始数据类型?

    问题是不言自明的 我知道可以扩展原始数据类型 例如string但有可能覆盖它吗 这是在采访中被问到的一个问题 不 你不能覆盖任何东西 Ecma脚本定义原始类型 http es5 github com x4 3 2 Undefined Nul
  • Telegram 授权无默认按钮

    使用 Telegram 第 3 方授权的唯一有记录的方法是使用其提供的脚本https core telegram org widgets login https core telegram org widgets login 这个脚本 正如
  • 使用 Javascript / Jquery 的本地存储(不使用 HTML5)

    我想在 javascript 或 jquery 中复制本地存储概念 类似于 HTML5 但不幸的是我不知道如何开始 任何人都可以建议如何使用 javascript 或 jquery 实现本地存储 不使用 HTML5 这是一个有点愚蠢的差事
  • 使用 onBlur 事件上的值更新 React 输入文本字段

    我有以下输入字段 在模糊时 该函数调用服务来更新服务器的输入值 完成后 它会更新输入字段 我怎样才能让它发挥作用 我可以理解为什么它不允许我更改字段 但我能做些什么才能使其工作 我无法使用defaultValue因为我会将这些字段更改为其他
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 元素中优先考虑 ngclick 而非 nghref

    tl dr 如何强制 Angular 只执行 ngclick 指令 a 元素而不清空 删除href 我的网站在某些元素上有一些自定义行为 模式打开 位置栏更新等 但对于 SEO 索引我also需要它成为一个 a 元素与href包含有效链接的
  • Postman - 如何计算 JSON 响应中特定对象的出现次数

    我是 JSON 和 Postman 的新手 我相信我正在尝试做一些非常简单的事情 我创建了一个 GET 请求 它将获得如下所示的 JSON 响应 在下面的例子中我想得到count响应中所有 IsArchived 属性 这些属性的数量因响应而
  • 理论上防止 WebSocket 中第一个收到的消息丢失

    服务器端代码发送消息立即地连接打开后 它向客户端发送初始配置 问候语 以下代码是在客户端 var sock new WebSocket url sock addEventListener error processError sock ad
  • RTCDataChannel发送方法不发送数据

    我的 RTCDataChannel 遇到一个奇怪的问题 我正在对 WebRTC 进行一些研究 并且已经可以进行 WebRTC 音频 视频聊天 现在我想使用 RTCDataChannel 添加文本聊天和文件共享 我已经像这样创建了 RTCDa
  • 使用 Lodash 的 TypeScript:_.map(["123", " 234 "], _.trim) 返回 boolean[]?

    我有一个字符串数组 它们已像这样分割 var searchValue 600 800 123 180 var groups searchValue split gt 600 800 123 180 因此项目周围可能存在空格 并且我想删除空格
  • 如何在 JavaScript 中获取浮点数的小数位?

    我想要的是与 Number prototype toPrecision 几乎相反的 这意味着当我有数字时 它有多少位小数 例如 12 3456 getDecimals 4 对于任何想知道如何更快地完成此操作 无需转换为字符串 的人 这里有一

随机推荐