1 let baseApiUrl = 'xxxx' 2 var app = getApp(); 3 4 let defaultHeaders = { 5 'Content-Type': 'application/json' 6 } 7 function request(url, data, method, header={}) { 8 return new Promise(function (reslove, reject) { 9 wx.request({ 10 url: baseApiUrl + url, 11 data: data, 12 method: method, 13 header: Object.assign(defaultHeaders, header,{ 14 token: wx.getStorageSync('_user_token') 15 }), 16 success: function (res) { 17 if (res.statusCode != 200) { 18 reject(res); 19 return 20 } else if (res.data.code == 10020001){ 21 console.log('invalida token.') 22 refreshToken().then(resp=>{ 23 console.log('request aggin...') 24 request(url, data, method, header).then((resp) => { 25 reslove(resp) 26 }) 27 }) 28 return 29 } 30 reslove(res); 31 }, 32 fail: function (res) { 33 reject(res); 34 }, 35 complete: function (res) { 36 } 37 }) 38 }) 39 } 40 41 function refreshToken(){ 42 return new Promise((resolve, reject) => { 43 wx.login({ 44 success(res) { 45 console.log(res) 46 request('/login/index/index', { 47 code: res.code 48 }).then(res => { 49 var _user_token = res.data.data.token 50 var _user_openid = res.data.data.openid 51 var _user_unionId = res.data.data.unionid 52 var token_time = Date.parse(new Date()) + 23 * 60 * 60 * 60 53 wx.setStorageSync('_user_token', _user_token); 54 wx.setStorageSync('token_time', token_time); 55 wx.setStorageSync('_user_openid', _user_openid); 56 wx.setStorageSync('_user_unionId', _user_unionId); 57 defaultHeaders.token = res.data.token 58 resolve(res.data) 59 }) 60 }, 61 fail(res) { 62 reject() 63 } 64 }) 65 }) 66 } 67 68 module.exports = { 69 refreshToken: refreshToken, 70 request: request 71 }