commonTool.js
// 获取opencode
static getOpencode(fromUrl) {
// 从地址栏的url中截取code
let url_str = location.href // 获取整个地址栏的url_str
// console.log('url_str',url_str)
let num = url_str.indexOf("?")
url_str = url_str.substr(num + 1) // 获取url中的参数
let arr = url_str.split("&") // 获取url参数数组
// 获取code
let code = ''
for (let i = 0; i < arr.length; i++) {
num = arr[i].indexOf('=')
if (arr[i].substring(0, num) == 'code') {
code = arr[i].substr(num + 1)
}
}
if (code) {
return code
} else {
CommonTool.handleGetOpencode(fromUrl)
}
}
// 手动获取opencode
static handleGetOpencode(fromUrl) {
let href_str = location.href
let index = href_str.indexOf('/');
for (let i = 0; i < 2; i++) {
index = href_str.indexOf('/', index + 1);
}
let ress = href_str.substring(0, index)
ress = `${ress}/#/pages/${fromUrl}/${fromUrl}`
// console.log('href_str', ress)
window.open(`https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx90995013d10501f3&redirect_uri=${encodeURIComponent(ress)}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`)
}
login.jsx
// 使用微信登录
WeixinLogin() {
let code = commonTool.getOpencode('login');
if (!code) {
return false;
}
let info = {
opencode: code,
}
MyLoading.showShade();
memberService.WeixinLogin(info).then((data) => {
if (data.code == 200) {
} else if (data.code == 40163 && data.msg.indexOf('code been used') > -1) {
commonTool.handleGetOpencode('login')
}
}).finally(() => {
MyLoading.hideShade();
})
}