uniapp h5 微信网页授权获取code(静默授权)

        1、判断是否处于微信环境,如果是微信环境就执行获取code并登录的方法,否则就跳转到h5的登录页面

onLoad() {
			let isWX = this.isWechat()
			if (isWX) {
				this.getWXCode()
			} else {
				uni.navigateTo({
					url: '/pages/login/loginPage/index'
				});
			}
		},
methods: {
// 判断是否为微信环境
			isWechat() {
				var ua = navigator.userAgent.toLowerCase()

				var isWXWork = ua.match(/wxwork/i) == 'wxwork'

				var isWeixin = !isWXWork && ua.match(/MicroMessenger/i) == 'micromessenger'
				return isWeixin

			},
}

         2、获取code并登录

methods:{
// 获取code并登录   
			getWXCode() {
				let appid = ''    //公众号的唯一标识
				let code = this.getUrlCode().code; //是否存在code
				let url = ''    //授权后重定向的回调链接地址
				if (code == null || code === "") {
					window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appid+'&redirect_uri='+encodeURIComponent(url)+'&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
				} else {
					this.code = code;
					//此处调用后端提供的接口,传入获取到的code换取access_token
				}

			},

// 截取url中的code方法
			getUrlCode() {
				// 截取url中的code方法
				var url = location.search;
				var theRequest = new Object();
				if (url.indexOf("?") != -1) {
					var str = url.substr(1);
					var strs = str.split("&");
					for (var i = 0; i < strs.length; i++) {
						theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
					}
				}
				return theRequest;
			}
}

注:写完之后打包上传到服务器之后使用微信开发者工具进行调试

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值