vue开发公众号 在钩子里面处理登录获取code


const baseurl = "//xxx" // 解析url参数并获取code function getUrlParam(name) { //name为要获取的参数名 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var rrr = decodeURIComponent(window.location.search); var r = rrr.substr(1).match(reg); if(r != null) return unescape(r[2]); return null; } // 请求微信服务器获取code 方法 function getUserCode() { redirectURL = encodeURI((baseurl + window.location.pathname + window.location.search).split('&code')[0]);//获取地址 const base = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='; let state; let surl; let reserveUrl; let appid = ""; let scope = "1"; window.location.href =base + appid +'&redirect_uri='+ redirectURL +'&response_type=code&scope='+ scope + '#wechat_redirect'; } // 路由变化时 router.beforeEach((to, from, next) => { //读取sessionStorage的user let user = JSON.parse(sessionStorage.getItem('user')); //这里可以在开发生产环境下 加测试用户信息存储到sessionStorage if(document.domain == "127.0.0.1"){//本地环境 sessionStorage.setItem('user', JSON.stringify({ uid : 'eyJhbGciOiJIUzI1NiJ9.eyJ0IjoiNjY1NDA6MTU1NzQ0ODE2MiJ9.Dt4QHKq58GOdI_j8GhK0o3SkyWwHDlfeHR0nh1nEgsw', identity: 1 })); store.commit('updateUser', {"uid":"eyJhbGciOiJIUzI1NiJ9.eyJ0IjoiNjY1NDA6MTU1NzQ0ODE2MiJ9.Dt4QHKq58GOdI_j8GhK0o3SkyWwHDlfeHR0nh1nEgsw","user_id":66540,"identity":1,"avatar":"http://chaofenxiang.vip/data/attachment/avatar/1904/28/ef0b7277767425348af3503e0759eacd.png","nickname":"小义","sex":"女","mobile":"15070026795"});//赋值本地存储 } // 已登录 if (user) { next();//释放路由 如果已经登录 } // 未登录 且不是在测试环境下 if (!user && document.domain != "127.0.0.1") { const code = getUrlParam('code');//获取url 上面的code // 还未完成微信授权 if (!code) {//假如没code getUserCode();//请求微信服务器获取code } // 已完成微信授权 假如已经获取到了code if (code) { //使用code 去登录 axios.get("/xxxx", {// params: { code: code, } }).then(res => { if (res.status == 200) { let userInfo = res.data.userInfo; sessionStorage.setItem('user', JSON.stringify(userInfo));// 存sessionStorage } else { } }).catch(err => { //登录失败,请刷新重试 }); } }else{ next(); } }); //ps 代码放在main.js 里面仅供参考

  

猜你喜欢

转载自www.cnblogs.com/shaozhu520/p/11321955.html