文档地址:
developers.weixin.qq.com/doc/oplatfo…
1、跳转到扫码页面
let redirectUri = encodeURIComponent( process.env.VUE_APP_TAOZHI_URL + '/login');
let state = new Date().getTime();
window.localStorage.setItem("user_wx_state", state);
window.location.href = `https://open.weixin.qq.com/connect/qrconnect?
appid=***************
&redirect_uri=${redirectUri}
&response_type=code
&scope=snsapi_login
&state=${state}
#wechat_redirect`
2、扫码完成之后,跳转回 redirect_uri
路径
开始的做法:
1、页面初始化的时候,监听一下路径的参数
2、判断是否有code
和state
,并且state
和本地存储的是否一致
3、如果一致则拿着这个code
走后台的接口,去获取access_token
和refresh_token
4、设置token
,更新用户信息,完成登录
问题:
但是这样的话有个问题,code
直接在路径上暴露出来了
解决:
1、跳转到扫码页面的时候,加一个 back_url
参数,和当前路径一致
2、扫码完成,跳转回来的时候,在路由拦截里拦截一下,走之前的逻辑
3、登录完成之后,跳转到back_url
的页面