先判断有无token
要先获取到code,调用接口传给后端获取token存起来带入请求头请求其他接口
async getWechatCode() {
if (isWechat) {
let appid = "appid一般为固定的"; //微信APPid
let code = this.getUrlCode().code; //是否存在code
let local = window.location.href;
console.log("local", local);
//console.log("code", code);
if (code == null || code === "") {//如果没有code以下获取code
//不存在就打开上面的地址进行授权
window.location.href =
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
appid +
"&redirect_uri=" +
encodeURIComponent(local) +
"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
} else {//用code直接请求
this.code = code;
let request = await this.$api.myRequest({
url: '/api/get_openid',//请求token的接口
data:{
'code':this.code,
'state':'STATE',
'pid':'',
'isWhite':'1'
}
})
console.log(request, 'get_openid')
if(request.code == '1'){
localStorage.setItem('token',request.token);
//localStorage.setItem('token',request.token);
localStorage.setItem('expires_in',request.expires_in);
localStorage.setItem('uid',request.uid);//当前用户的id
this.user()//这个不用管 是我授权完调用获取用户信息的事件
}
}
}
},
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];
}
}
console.log(theRequest);
return theRequest;
},