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;
}
}
注:写完之后打包上传到服务器之后使用微信开发者工具进行调试