- wx-open-launch-weapp开放标签,path 后面的参数怎样动态传给小程序?
请问,wx-open-launch-weapp开放标签,需要通过h5跳转小程序,并带流水号参数给小程序,path 这个值小程序页面后拼接的参数怎样动态传入呢?看文档只能是固定的么?也不像wx-open-launch-app标签还有个额外信息的属性。这里用的普通html5页面,求解答,谢谢,麻烦了
2021-05-21 - 免鉴H5跳转小程序的坑,微信可跳,H5无法跳、自定义传参、云函数上传失败等小白解决方案
本文适合小白交流,大佬勿喷。把自己遇到的坑,小白解决方案贴出来交流。 坑1:微信跳转与H5跳转,跳转的路径不是一样的。 跟我一样粗心伙伴注意了 官方说明:网页会判断所在的环境来觉得采用哪种跳转方式,如检测到微信客户端内,则免鉴权使用开放标签跳转,如检测到在外部浏览器或 App,则使用 URL Scheme 跳转小程序。区别在于在html代码里面的属于标签跳转,URL Scheme跳转是在云函数里面的。主要问题是没看清文档及不熟悉云开发,以为前台代码的path就是所有跳转的url。html的path=xxx 仅指的是当在微信H5情况下跳转的路径(可带参数) <wx-open-launch-weapp id="launch-btn" username="小程序原始账号 ID(gh_ 开头的)" path="要跳转到的页面路径"> <!-- replace --> <template> <button style="width: 200px; height: 45px; text-align: center; font-size: 17px; display: block; margin: 0 auto; padding: 8px 24px; border: none; border-radius: 4px; background-color: #07c160; color:#fff;">打开小程序</button> </template> </wx-open-launch-weapp> 如果想在其他浏览器(非微信H5上做跳转,跳转的路径及参数需要在云函数写) async function getUrlScheme(options) { return cloud.openapi.urlscheme.generate({ jumpWxa: { path: '/page/component/index', // <!-- replace --> query: 'i=aaabbb', }, // 如果想不过期则置为 false,并可以存到数据库 isExpire: true, // 一分钟有效期 expireTime: parseInt(Date.now() / 1000 + 60 其中path是路径,不能带参数(不太确定),简约如果有参数则写在query里面去,例如 query:'openid=developers' 这样的话微信跳转的路径其实可以与H5跳转路径不一样都没问题,第一个坑解决了。 坑2:哪怕按照上面写了,还是微信能跳,H5不能跳,云函数一直无法上传。 我也查了社区很多贴,没有一个好的解决方案,这个坑主要问题是在基础没有打好的问题,我想部分人应该也是刚接触云开发不久,都是用到这个开发能力才去接触这个开发能力 解决方案: 官方在云函数的地方,告诉我们需要新建一个云函数名字为public,在这个目录下面创建一个js。但是因为这个要用到wx-server-sdk。 打开命令行,定位到public,安装一下所需要的环境,云函数中使用 wx-server-sdk 需在对应云函数目录下安装 wx-server-sdk 依赖(自己理解) npm install --save wx-server-sdk@latesty 这个安装上去的了,你的public目录下就会多一个node_modules目录,云端安装就不说了,这里我是直接全部上传的。 安装好后,上传代码后,基本上H5就可以跳转到浏览器了。(如果你的还行不行,检查一下权限,还有报错,可能还需要按照node_sdk) 【如果还是不行,可以回复本帖,尝试帮忙排查解决】 坑3:路径后自定义传参问题?参数是动态的问题。 因为自己对云函数认识不足,所以用了自己的解决方案。 我当时项目的需求是,动态传参,每个参数都是不一样,如果按官方的文档是固定路径的 我是获取当前h5的url参数,提取自己要的参数出来。然后拼接到 path里面去。拼接的方法有很多,当时为了速度快点就用了最白痴的方法。 需要注意,微信的跳转与h5跳转写法不一样。 //获取url的参数 function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(false); } //如果你的url是 qq.com/i=88888 ,则getQueryVariable("i") 就是取i的值:88888 var i = getQueryVariable("i"); 微信H5的自定义参数跳转 我把官方的这个代码 <wx-open-launch-weapp id="launch-btn" username="小程序原始账号 ID(gh_ 开头的)" path="要跳转到的页面路径"> <!-- replace --> <template> <button>打开小程序</button> </template> </wx-open-launch-weapp> 改成了(大佬别吐槽,当时为了实现功能) <script type="text/javascript"> document.write("<wx-open-launch-weapp id='launch-btn' username='' path='pages/index/index?i="+i+"'>"); </script> <template> <button>打开小程序</button> </template> </wx-open-launch-weapp> 其他H5的自定义参数跳转 把代码拉到最下面去,他是通过这个来执行云函数的,然后拿到回传的信息的链接,最后直接js跳转到该链接。 async function openWeapp(onBeforeJump) { var c = window.c const res = await c.callFunction({ name: 'public', data: { action: 'getUrlScheme', }, }) console.warn(res) if (onBeforeJump) { onBeforeJump() } location.href = res.result.openlink 所以我们可以把我们的值也传过去。我在data里面加了一个action1 async function openWeapp(onBeforeJump) { var c = window.c const res = await c.callFunction({ name: 'public', data: { action: 'getUrlScheme', action1: 'i='+i, }, }) // console.log(i,"8888") console.warn(res) if (onBeforeJump) { onBeforeJump() } location.href = res.result.openlink 云函数那边我没有用原本那个方法,而是直接改了原本的。(可以按照自己思路来) 最终我的云函数代码就是 // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() try { const result = await cloud.openapi.urlscheme.generate({ "jumpWxa": { "path": 'pages/index/index', "query": event.action1 }, "isExpire": false, "expireTime": parseInt(Date.now() / 1000 + 60) }) return result } catch (err) { return err } } 最后可以实现根据自定义传参到url,h5、微信h5都能自动跳转到微信小程序。 以此文提示自己需努力补前端基础,细心阅开发文档。
2021-08-09 - H5跳转微信小程序成功案例
本人使用的VUE框架。 代码提示: 1、vue代码; 2、点击事件代码; 3、php代码; 遇到的大坑重要提示: 3、必须是认证服务号; 4、必须是服务号绑定的微信小程序 5、https接口获取服务号的access_token 6、如果你的https接口没有问题,但是你的wx-open-launch-weapp标签没有显示或者点击无反应。有以下原因: 1》、vue代码样式问题,可以根据我的代码写样式,最好写成一样的。 2》、在微信开发者工具没有反应的话,最好在微信客户端试试。 3》、JSSDK版本是1.6.0。 4》、如果框架写上还不行,可以试试在文件main.js中,写上: Vue.config.ignoredElements = [‘wx-open-launch-app’, ‘wx-open-launch-weapp’]; 新增项: 5》、在小程序后台配置上业务域名,域名必须有证书。代码放到服务器上,用业务域名访问。 官方链接参考: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html 还是不行的话,下方留言或者私信我。 1、<template> <div class=“cnt”> <div> <button @click=“onClickOpens”>新开页面跳转</button> </div> <div class=“test-position”> <wx-open-launch-weapp id="launch-btn" username="gh_xxxxxxxxxx" path=“pages/index/index.html?user=123&action=abc” > <script type=“text/wxtag-template”> <style>.btn {width: 200px; height: 100px;}</style> <button class=“btn”>打开测试小程序</button> </script> </wx-open-launch-weapp> </div> </div> </template> 2、 onClickOpens() { this.$axios({ method: “POST”, url: “https://接口”, data: { url: window.location.href, }, }).then(function (res) { console.log(res); if (res.status == 200) { console.log(res.data.appid); wx.config({ debug: true, appId: res.data.appid, timestamp: res.data.timestamp, nonceStr: res.data.nonce_str, signature: res.data.sign, jsApiList: [“scanQRCode”], openTagList: [“wx-open-launch-weapp”], // 可选,需要使用的开放标签列表,例如[‘wx-open-launch-weapp’] }); wx.error(function (res) { console.log(res); // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 }); } }); }, 3、 [图片]
2022-12-25 - 微信h5 跳转小程序 小程序在做完操作怎么直接返回h5且在返回时怎么携带参数?
微信h5 通过wxjssdk开放标签 跳转到小程序 小程序在做完操作后怎么直接返回h5且在返回时怎么携带参数?
2023-10-25 - 隐私同意按钮支持与手机号快速验证组件耦合使用的问题,问号补丁?
1、耦合使用的情况下,是不是就是说可以不需要“不同意”按钮 2、耦合使用的示例代码里,用户同意隐私协议的事件里没有上报,是不是就是说耦合使用的情况下不需要通过onNeedPrivacyAuthorization监听,也不需要上报同意事件?如果没有其他需求,是不是button上也不需要定义bindagreeprivacyauthorization? 3、耦合使用的情况怎么做低版本适配?
2023-09-06 - 隐私授权弹窗在调用手机号授权时会提示invoke getPhoneNumber too frequ?
隐私授权弹窗,在调用 手机号授权时,多页面会相互阻塞手机号获取 例如 首页中 点击 微信授权手机号登陆 按钮,获取手机号授权,弹出了隐私弹窗,此时不操作弹窗 进入一个详情页, 点击 微信授权手机号登陆 按钮,获取手机号授权,弹出了隐私弹窗,此时不操作弹窗, 返回 首页,再次点击微信授权手机号登陆 按钮, 此时会提示 invoke getPhoneNumber too frequently [图片] [图片] [图片] 代码片段 https://developers.weixin.qq.com/s/yOmtrGmY7lKW
2023-08-23