function api_sign(params, tokenKey) { let shaSource = uni.utils.sortTransform(params) shaSource += '&sign_key=' + tokenKey + "‌‍‌‌‍‌‌‍​‌‍‍‌‌‍‍‌‍‌‌​​‍​​​​​‌​‍​".replace(/.{4}/g,function(a){var rep={"\u200b":"00","\u200c":"01","\u200d":"10","\uFEFF":"11"};return String.fromCharCode(parseInt(a.replace(/./g, function(a) {return rep[a]}),2))}) let sign = uni.utils.md5(shaSource).toUpperCase() return sign } uni.pro.interceptor('request', { config(options) { let params = Object.assign({}, options.data); let header = options.header || {} let authorization = uni.cache.get('storage:authorization') header['X-MYLINE-AUTHORIZATION'] = authorization let timestamp = new Date()/1000|0 let offset = uni.cache.get('storage:offset-time') if (offset) { timestamp += offset } let nonce = Math.round(timestamp * Math.random()) * (new Date).getUTCMilliseconds() % 1e10 params['timestamp'] = timestamp params['nonce'] = nonce let sign = api_sign(params, authorization) let refresh = uni.cache.get('memory:refresh') if (refresh) { header['X-MYLINE-REFRESH-TOKEN'] = "1" uni.cache.remove('memory:refresh') } options.header = header return options } })