H5微信登录授权

先判断有无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;
},

猜你喜欢

转载自blog.csdn.net/keaicll/article/details/129671665