关于微信公众号的h5页面跳转微信小程序的详细介绍

简介

关于微信公众号跳转小程序的功能,我也是研究了一整天才弄好的,主要是微信官方文档写的不清楚,百度上的各种文章也各说各的,不过最后还是要相信官网文档,接下来我会一步一步分析,希望对你有帮助,并且最后会贴上全部代码。

思路

一、条件

  • 已认证的服务号,服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序。
  • 已认证的非个人主体的小程序,使用小程序云开发的静态网站托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序。

这两个条件符合其一即可

二、版本兼容

  • 微信版本要求为:7.0.12及以上
  • 系统版本要求为:iOS 10.3及以上、Android 5.0及以上

对于符合微信或系统最低版本要求但仍无法使用微信开放标签的场景,将会在下方使用步骤中的wx.config权限验证成功后触发WeixinOpenTagsError事件告知开发者。仅无法使用微信开发标签,JS-SDK其他功能不受影响,可通过如下方法监听并进行回退兼容:
document.addEventListener(‘WeixinOpenTagsError’, function (e) {
console.error(e.detail.errMsg); //无法使用开放标签的错误原因,需回退兼容。仅无法使用开放标签,JS-SDK其他功能不受影响 });

三、实现步骤

  1. 引入wx提供的js_sdk

在需要调用 JS 接口的页面引入如下 JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问http://res2.wx.qq.com/open/js/jweixin-1.6.0.js(支持https)
备注:支持使用 AMD/CMD 标准模块加载方法加载

可以使用srcipt标签引入,也以使用npm包下载以后导入使用,比如我使用uniapp开发的时候,打印 wx 对象的时候并不是我引入的js,我猜测应该是uniapp内置的,于是我使用npm下载了一个js_sdk,选择其一即可,我用的是第一个

npm install jweixin-module --save
npm install weixin-js-sdk --save

import wxApi from "jweixin-module"
wxApi.config()
wxApi.ready()
  1. 通过 config 接口注入权限验证配置

wx.config({
debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
appId: ‘’, // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: ‘’, // 必填,生成签名的随机串
signature: ‘’,// 必填,签名
jsApiList: [] // 必填,需要使用的 JS 接口列表
openTagList: [] // 可选,需要使用的开放标签列表
});

使用wx.config注入需要的权限,需要的参数前端并不能获取,需要服务器调用微信提供的接口计算得到,后端的代码不用关注,我只写前端的代码

var data = {
	//不需要后面的hash值
	//服务器计算签名的时候需要用到当前网页的链接,且链接里不需要hash值,所以做这个处理
	url: window.location.href.split('#')[0]
}
this.$axios.post('XXXXXX',data).then(res=>{
	var params = res.data.data;
	wx.config({
	  debug: true, 
	  appId: params.appid, 
	  timestamp: params.timestamp,
	  nonceStr: params.nonceStr, 
	  signature: params.signature,
	  jsApiList: ['onMenuShareTimeline'],
	  openTagList:['wx-open-launch-weapp']
	});
	wx.ready(()=>{
		//这里是成功后执行
	});
	wx.error(()=>{
		//这里是出现异常执行
	})
})

这里有几点需要注意的,是重点,仔细看了,一般出问题多半这在里

  1. 第一点就是后端获取签名的时候,需要用到该网页的地址,地址截取hash值之前的部分,并且链接里带有的参数也要不能少,下面就是微信文档的原话:
    签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

  2. 第二点就是 jsApiList: [‘onMenuShareTimeline’] ,由于这个用不到,但是也不能空,就可以去微信文档里随便选一个填上去就行

  3. 第三点,openTagList:[‘wx-open-launch-weapp’] 这一项要注意,我们使用的开放标签是 wx-open-launch-weapp,这是小程序专用的,有些人直接复制微信文档的示例,可能没注意使用的是wx-open-launch-app这个标签,这个是打开微信app的

当出打开debug模式下,会以弹窗的形式告诉你配置注入是否成功,当成功时会弹出 errMsg:config:ok 如果看到这个弹窗,说明你授权这一步已经完成了

3.使用微信开放标签
这也是最后一步了,微信文档上提供的示例直接拿来用就行

<wx-open-launch-weapp
  id="launch-btn"
  username="gh_xxxxxxxx"
  path="pages/home/index?user=123&action=abc"
>
  <script type="text/wxtag-template">
    <button>打开小程序</button>
  </script>
</wx-open-launch-weapp>

需要注意的是 username 就是小程序的原始ID,在微信公众平台 > 设置 > 基本设置的最下面。path就是你小程序的地址,你用那个页面的地址打开就是哪个页面并且可以使用url传参,vue中开放标签的样式建议使用行内样式,不然不生效,在vue中,由于无法识别 wx-open-launch-weapp 标签,编译的时候会报错,我们需要去main.js里加入一句话:

Vue.config.ignoredElements.push('wx-open-launch-weapp');

意思就是忽略对这个标签的检查

到这里,就完成了,权限注入不成功的情况下,button按钮是不会渲染的,如果权限注入成功之后依旧不显示按钮,就是按钮不兼容,需要另外处理,另外,标签上可以设置跳转的小程序版本,分别式:开发版,体验版,正式版,设置env-version属性就可以了,详情可以去官网文档查看

全部代码

<template>
	<div class="toMiniapp_box">
		<text class="toMiniapp_box--tips">
			您的微信暂未注册账号,可以点击下方按钮前往小程序注册账号
		</text>
		<wx-open-launch-weapp id="launch-btn" username="gh_XXXXXXXX" path="pages/index/index">
			<script type="text/wxtag-template">
				<button>前往小程序注册</button>
			</script>
		</wx-open-launch-weapp>
	</div>
</template>

<script>
	const wxapi = require('../../utils/wxApi.js');
	export default {
		created() {
			this.getMiniappPermition()
		},
		methods: {
			// 请求服务器获取签名
			getMiniappPermition() {
				const url = encodeURIComponent(window.location.href.split('#')[0]);
				uni.request({
					url: `/mapuser/getMpJsticket?appid=XXXXX&signUrl=${url}`,
					method: "GET",
					success: (res) => {
						var params = res.data.data
						this.wxReady(params)
					}
				})
			},
			// 签名验证
			wxReady(params) {
				wxapi.config({
					debug: false, // 开启调试模式
					appId: params.appid, // 必填,公众号的唯一标识
					timestamp: params.timestamp, // 必填,生成签名的时间戳
					nonceStr: params.nonceStr, // 必填,生成签名的随机串
					signature: params.signature, // 必填,签名
					jsApiList: ['onMenuShareTimeline'], // 必填,需要使用的 JS 接口列表
					openTagList: ['wx-open-launch-weapp'] // 可选,需要使用的开放标签列表									    		 
				});	
				const _this = this;
				wxapi.ready(() => {
					_this.$nextTick(() => {
						//监听按钮异常
						var btn = document.getElementById('launch-btn');
							btn.addEventListener('launch', function(e) {
								console.log('success');
							});
							btn.addEventListener('error', function(e) {
								console.log('fail', e.detail);
							});
					})
				})

				wxapi.error((err) => {
					uni.showToast({
						title: "微信授权失败"
					})
				})
			}
		}
	}
</script>

以上就是全部代码

推荐几个写的不错的同类型文章:
https://cloud.tencent.com/developer/article/1893051
https://blog.csdn.net/weixin_45532305/article/details/109491862
http://events.jianshu.io/p/88ad52ce7b6f

码字不易,点个赞再走呗 ヾ(≧▽≦*)o

  • 13
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: 要从外部的H5页面跳转微信公众号的关注页面,需要进行以下步骤: 1. 确认微信公众号的原始ID 在微信公众号后台,可以在“设置”-“公众号设置”-“帐号详情”中找到公众号的原始ID。 2. 在外部H5页面上添加关注链接 在外部H5页面上添加一个链接,链接的URL为以下格式: ``` https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=[公众号的原始ID]#wechat_redirect ``` 请将[公众号的原始ID]替换为你的微信公众号的原始ID。 例如,如果微信公众号的原始ID为“wx123456789”,则链接的URL为: ``` https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=wx123456789#wechat_redirect ``` 3. 用户点击链接后跳转微信公众号关注页面 当用户在非微信浏览器上打开外部H5页面,并点击上述链接时,会自动跳转微信公众号的关注页面。 请注意,用户必须使用微信浏览器打开关注链接才能正常关注公众号。如果用户在非微信浏览器中打开链接,可能无法正常关注公众号。 ### 回答2: 从外部h5微信浏览器跳转微信公众号关注页面有以下几种方法: 1. 生成关注链接:在微信公众号平台获取自己的微信公众号关注链接,一般是类似于https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==#wechat_redirect的形式。将这个链接嵌入到外部H5页面中,用户点击链接即可跳转微信公众号关注页面。 2. 使用微信公众号二维码:在微信公众号平台生成一个关注该公众号的二维码,然后将二维码图片插入到外部H5页面中。用户打开外部H5页面后,扫描二维码即可跳转微信公众号关注页面。 3. 利用微信JSSDK:通过在外部H5页面中引入微信官方提供的JSSDK,在页面中调用微信的相关API,实现跳转微信公众号关注页面。具体做法是首先通过wx.config进行配置,然后使用wx.ready监听JSSDK配置完成后的事件,最后使用wx.openUrl指定跳转的URL,将其设置为微信公众号的关注链接。 总之,以上是从外部H5微信浏览器跳转微信公众号关注页面的几种方法,其中常用的是生成关注链接和使用微信二维码的方式。具体选择哪种方法,可根据实际需求和开发环境来决定。 ### 回答3: 如果要从外部H5微信浏览器跳转微信公众号关注页面,可以通过以下几种办法: 1. 生成个人或公众号的二维码:可以在微信公众号后台或者第三方平台上生成一个关注公众号的二维码。在H5页面上将该二维码展示出来,用户可以使用手机扫描二维码,跳转微信客户端的公众号关注页面。 2. 使用微信授权登录:在H5页面上使用微信的网页授权登录功能,引导用户使用微信账号登录,并获取到用户的openid。在登录成功后,再通过微信JS-SDK的接口,调用相关功能,弹出关注公众号的页面,引导用户关注。 3. 在H5页面中使用微信JS-SDK的接口:可利用微信JS-SDK的相关功能,如打开特定网页、唤起微信扫一扫等。在H5页面上加入一个关注按钮,点击按钮后调用JS-SDK接口,跳转微信公众号的关注页面。 需要注意的是,以上方法在实际应用中需要满足一些条件,比如需要有正式的微信公众号,需要进行相应的配置,以及需要获取微信JS-SDK的权限等。另外,不同的微信版本和设备可能对跳转行为有一定的限制,因此在操作时要注意兼容性的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值