第一次接触微信公众号开发时,看了微信开发文档,首先需要获取微信code和微信小程序一样,但是获取方式不一样,需要授权。

我用uniapp开发的  所以在mian.js中获取code的方式。

判断是否有code的,有就去请求后台接口

Vue.prototype.getCode = function () { // 非静默授权,第一次有弹框
	this.code = '';
	local = encodeURIComponent(window.location.href); // 获取页面url
	var appid = '公众号的appid';
	this.code = this.getUrlCode().code; // 截取code
	if (this.code == null || this.code === '' || this.code == undefined) { // 如果没有code,则去请求
	window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${local}&response_type=code&connect_redirect=1&scope=snsapi_userinfo&state=STATE#wechat_redirect`

	}else {
		// 存在code 获取openid
	    var h5WinXinDefaultUrl = getApp().globalData.url + "/login/getMpUserInfo"
		
		
		uni.request({
			url:h5WinXinDefaultUrl,//请求后台路径
			data:{
				code:this.code
			},
			header:{
				'content-type': 'application/json'
			},
			method:'POST',
			success: (res) => {
				if(res.data.status == 1){
					//openid 用户名 头像 
					uni.setStorageSync("wxCode",'wx');
					uni.setStorageSync("open_id",res.data.data.user.open_id);
					uni.setStorageSync("nickname",res.data.data.user.nickname);
					uni.setStorageSync("avatar",res.data.data.user.avatar);
					uni.setStorageSync("uid",res.data.data.user.uid);
				}
			}
		})
	}
},

获取code

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

 

Logo

前往低代码交流专区

更多推荐