diff --git a/lib/plugin.js b/lib/plugin.js index 13aa82a..3d357e5 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -87,12 +87,13 @@ export class ZZZPlugin extends plugin { return { api: null, uid: null, deviceFp: null }; } // 获取设备指纹 - let deviceFp = await redis.get(`ZZZ:DEVICE_FP:${ltuid}:FP`); + let deviceFp let bindInfo = await redis.get(`ZZZ:DEVICE_FP:${ltuid}:BIND`); - let data = { - deviceFp, - }; if (bindInfo) { + deviceFp = await redis.get(`ZZZ:DEVICE_FP:${ltuid}:FP`); + let data = { + deviceFp, + }; try { bindInfo = JSON.parse(bindInfo); data = { @@ -106,44 +107,61 @@ export class ZZZPlugin extends plugin { } catch (error) { bindInfo = null; } - } - if (!deviceFp) { - const sdk = api.getUrl('getFp', data); - const res = await request(sdk.url, { - headers: sdk.headers, - method: 'POST', - body: sdk.body, - }); - const fpRes = await res.json(); - logger.debug(`[米游社][设备指纹]${JSON.stringify(fpRes)}`); - deviceFp = fpRes?.data?.device_fp; if (!deviceFp) { - return { api: null, uid: null, deviceFp: null }; + const sdk = api.getUrl('getFp', data); + const res = await request(sdk.url, { + headers: sdk.headers, + method: 'POST', + body: sdk.body, + }); + const fpRes = await res.json(); + logger.debug(`[米游社][设备指纹]${JSON.stringify(fpRes)}`); + deviceFp = fpRes?.data?.device_fp; + if (!deviceFp) { + return { api: null, uid: null, deviceFp: null }; + } + await redis.set(`ZZZ:DEVICE_FP:${ltuid}:FP`, deviceFp, { + EX: 86400 * 7, + }); + data['deviceFp'] = deviceFp; + const deviceLogin = api.getUrl('deviceLogin', data); + const saveDevice = api.getUrl('saveDevice', data); + if (!!deviceLogin && !!saveDevice) { + logger.debug(`[米游社][设备登录]保存设备信息`); + try { + logger.debug(`[米游社][设备登录]${JSON.stringify(deviceLogin)}`); + const login = await request(deviceLogin.url, { + headers: deviceLogin.headers, + method: 'POST', + body: deviceLogin.body, + }); + const save = await request(saveDevice.url, { + headers: saveDevice.headers, + method: 'POST', + body: saveDevice.body, + }); + const result = await Promise.all([login.json(), save.json()]); + logger.debug(`[米游社][设备登录]${JSON.stringify(result)}`); + } catch (error) { + logger.error(`[米游社][设备登录]${error.message}`); + } + } } - await redis.set(`ZZZ:DEVICE_FP:${ltuid}:FP`, deviceFp, { - EX: 86400 * 7, - }); - data['deviceFp'] = deviceFp; - const deviceLogin = api.getUrl('deviceLogin', data); - const saveDevice = api.getUrl('saveDevice', data); - if (!!deviceLogin && !!saveDevice) { - logger.debug(`[米游社][设备登录]保存设备信息`); - try { - logger.debug(`[米游社][设备登录]${JSON.stringify(deviceLogin)}`); - const login = await request(deviceLogin.url, { - headers: deviceLogin.headers, - method: 'POST', - body: deviceLogin.body, + } else { + deviceFp = await redis.get(`ZZZ:DEVICE_FP:${uid}`); + if (!deviceFp) { + const sdk = api.getUrl('getFp'); + const res = await fetch(sdk.url, { + headers: sdk.headers, + method: 'POST', + body: sdk.body, + }); + const fpRes = await res.json(); + deviceFp = fpRes?.data?.device_fp; + if (deviceFp) { + await redis.set(`ZZZ:DEVICE_FP:${uid}`, deviceFp, { + EX: 86400 * 7, }); - const save = await request(saveDevice.url, { - headers: saveDevice.headers, - method: 'POST', - body: saveDevice.body, - }); - const result = await Promise.all([login.json(), save.json()]); - logger.debug(`[米游社][设备登录]${JSON.stringify(result)}`); - } catch (error) { - logger.error(`[米游社][设备登录]${error.message}`); } } }