uniapp-H5微信公众号登录

uniapp-H5使用微信公众号登录

在使用uni-app混合开发时,在H5中如何使用微信公众号授权获取code进行后端校验登录做一个记录(微信网页官方开发文档)
思路:微信登录 --> 唤起链接(用户允许时可返回code) --> 全局监听code --> 有code则触发三方授权 —> 没有code判断是否登录getUserInfo

1.挟持是否在微信h5打开

  • 在微信点击链接打开网页点击微信登录
if (process.env.VUE_APP_PLATFORM === 'h5') {
	var ua = navigator.userAgent.toLowerCase();  
	if(ua.match(/MicroMessenger/i)=="micromessenger") { 
		uni.setStorageSync("index-path",'packages/center/pages/personal/personal')  
		let appid=this.$store.state.weixinAppid
		let redirectUri=encodeURIComponent(window.location.origin+"/#/"+uni.getStorageSync("index-path"))//encodeURIComponent('http://uli.anma.tech/index.html')//
		let scope="snsapi_userinfo"
		let url=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=STATE#wechat_redirect`
		console.info(url)
		// 唤起链接,如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE
		window.location.href=url
	}else{
		uni.showToast({
			icon: 'none',
			position: 'bottom',
			title: '请在微信客户端打开'
		});
	}
}

2.在App.vue中做一个全局监听code

<script>
	//根据参数名获取参数值
	function getQueryStringByName(name){
	     var result = window.location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i"));
	     if(result == null || result.length < 1){
	         return "";
	     }
	     return result[1];
	}
	export default {
		
		async onLaunch(option) {
			console.warn('App Launch ');
			console.warn(option)
			uni.setStorageSync("index-path",option.path||'pages/home/home')
			
			// #ifdef H5
				//截取code
				let code=option.query.code||getQueryStringByName("code")
				if(code){
					// 如果有code则触发api接口进行登录
					this.$store.dispatch('wechartLogin',{
						third:'weixin',
						code:code
						}
					)
					// this.$store.dispatch("auth",code)
					console.log('微信的code:',code)
				}else{
					var ua = navigator.userAgent.toLowerCase();
					if(uni.getStorageSync('token')){
						let res=await this.$store.dispatch("getUserInfo")
						if(res.code==1){
							return
						}
					}
				}
			// #ifdef
		},
		
	}
</script>

3.具体看官方开发文档

微信

要在uniapp中开发H5登录微信公众号并进行联调,有以下几个步骤: 1. 获取微信开发者账号和相关配置信息:首先需要在微信开放平台注册并创建一个开发者账号,然后创建一个微信公众号,并获取相应的AppID和AppSecret等配置信息。 2. 在uniapp项目中配置相关插件:在uniapp项目的manifest.json文件中,添加对应的插件配置,如"@dcloudio/uni-mp-weixin"插件。然后在项目的App.vue中通过uni.login方法获取登录凭证code,并调用uni.request方法发送请求到服务器获取用户的openid和session_key。 3. 前端与后端的联调:根据服务器返回的用户openid和session_key,在前端进行相关的业务逻辑处理,如展示用户信息、跳转到其他页面等。其中,服务器端需要处理用户的登录请求,并返回openid和session_key等信息给前端。 4. 微信公众号授权设置:在微信公众号后台设置中,配置网页授权域名和回调地址,并将uniapp项目的H5链接添加到公众号菜单中。 5. 测试和调试:完成以上步骤后,进行测试和调试,确保登录功能在H5中正常使用。可以通过调试工具、日志打印等方式进行定位和解决问题。 总结:在uniapp开发H5登录微信公众号的联调过程中,需要进行微信开发者账号和相关配置的准备,配置相关插件和设置,前端与后端的联调,以及进行测试和调试。通过这些步骤,可以实现在uniapp项目中登录微信公众号并进行H5联调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值