uniapp兼容H5和小程序订阅消息授权开发封装,使用方便

92 篇文章 4 订阅
86 篇文章 14 订阅

本文使用 uniapp 框架开发,因为H5的订阅消息和小程序的订阅消息的授权流程不一样,但是很多地方需要使用授权,所以我封装了一个兼容H5和小程序订阅消息授权的方法,使用比较方便,希望能够帮助到你,实测可用。如果有可以改进的地方,欢迎评论指出。如果对你有帮助就点个赞吧!

下面简单看下H5订阅消息发送和小程序订阅消息发送的区别:

简单说H5就是需要重定向到微信的一个地址,然后微信回调告诉你用户是否授权,而小程序是有官方提供的 API ,调用API就能拿到回调信息告诉你用户是否授权。

下面看看官方文档的介绍:

1、公众号H5订阅消息发送流程

2、小程序订阅消息授权

 

最后,来看看我是怎么实现的吧!

页面使用我封装的方法的方式:


import common from '@/util/common.js';

<!-- 订阅消息监听和发送,兼容微信小程序和H5 -->
onLoad: function(options) {
	common.Init.call(this);
	// #ifdef H5
	this.monitorSubscribeMsgAuthorize(options); //监听订阅消息授权回调
	// #endif
}
<!-- 页面调用订阅消息授权  场景id 模板id-->
this.subscribeMsgAuthorize(scene_id, template_id)

封装的js:common.js

function Init(e) {
	const that = this;

	// #ifdef H5
	// 监听订阅消息授权回调
	that.monitorSubscribeMsgAuthorize = (options) => {

		if (options.action === 'confirm') {
			const {
				class_id
			} = JSON.parse(uni.getStorageSync('courseInfo') || '{}');

			this.$request(this.$api.Weike.subscribe, {
				class_id: class_id
			}).then(res => {
                //授权成功的处理
				uni.showToast({
					title: res.data.msg,
					icon: 'none'
				});
			});
		}
	}
	// #endif


	// 订阅消息授权
	that.subscribeMsgAuthorize = (scene_id, template_id) => {

		// #ifdef MP-WEIXIN
		uni.requestSubscribeMessage({
			tmplIds: [template_id],
			success(res) {
				console.log(res)
				if (res.errMsg == 'requestSubscribeMessage:ok') {
					this.$request(this.$api.Weike.subscribe, {
						'class_id': scene_id
					}).then(res => {
						uni.navigateTo({
							url: `/pages/classRoom/courseList/courseList?id=${scene_id}`
						});
					})
				}
			}
		})
		// #endif

		// #ifdef H5
		//记录场景值到缓存,用户授权成功后传给后端
        uni.setStorageSync('courseInfo', JSON.stringify({
			class_id: scene_id
		}));
		
		let redirect_url = encodeURIComponent(location.href);
		let appId = getApp().globalData.wechat_appid
		location.href =
			`https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=${appId}&scene=${scene_id}&template_id=${template_id}&redirect_url=${redirect_url}#wechat_redirect`;

		// #endif
	}



}
module.exports = {
	Init: Init
}

 

Uniapp中,我们可以通过使用相关插件或API实现公众号H5小程序微信授权登录功能。 对于公众号H5授权登录,我们可以使用uni-login插件或通过uni.request发起微信官方授权登录的接口。首先,在公众号H5页面中,我们需要引入相应的JS-SDK,并使用wx.config配置公众号的AppID和权限等信息。然后,在登录按钮的点击事件中,调用wx.checkSession来检查当前用户的登录态是否有效。若无效,再调用wx.login获取code,并通过wx.request发起后台请求来换取用户的access_token和openId等信息。最后,我们可以将这些信息保存起来,并根据需求进行相应的业务逻辑处理。 对于小程序微信授权登录功能,在Uniapp中可以通过使用uni.login和uni.getUserInfo API来实现。首先,在小程序的入口页面中,在onLaunch生命周期里调用uni.login获取用户的登录凭证code,并将code传给后台服务器。后台服务器通过wx.login接口获取到用户信息后,再校验用户的身份。然后,在登录按钮的点击事件中,调用uni.getUserInfo获取用户的信息,并存入本地缓存,以供后续使用。接着,我们可以根据需要进行相应的业务逻辑处理。 需要注意的是,在实现公众号H5小程序微信授权登录功能时,我们需要保证项目中已经配置了相关的权限和配置信息,并正确处理各种回调和错误情况。同时,为了保护用户的隐私和安全,我们还需要合理处理用户信息的存储和使用,尽量避免泄露和滥用用户的个人信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a_靖

对你有帮助吗?打赏鼓励一下?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值