38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
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
|
||
}
|
||
})
|