const requestUtil = require('../requestUtil'); const routePath = require('../routePath'); // 定义授权平台的枚举 const EnumPlatformId = { XMLY: 11, QQ: 6 }; var mIsAuthQQ = false; var mIsAuthXmly = false; // class AuthUtil { // constructor() { // this.isAuthQQ = false; // this.isAuthXmly = false; // } // EnumPlatformId async function getAuthStatus(platformId, device) { var res; var isAuth; switch (platformId) { case EnumPlatformId.XMLY: res = await isAuthXmly(device); mIsAuthXmly = (res.deviceAuthStatus ?? -1) === 2 isAuth = mIsAuthXmly; break; case EnumPlatformId.QQ: res = await isAuthQQ(device); mIsAuthQQ = (res.deviceAuthStatus ?? -1) === 2 isAuth = mIsAuthQQ; break; default: res = { 'deviceAuthStatus': -1, }; isAuth = false; break; } console.log("获取授权状态:", res); // {deviceAuthStatus: 2, nickname: "听友511052575", avatarUrl: "http://imgopen.xmcdn.com/storages/f999-audiofreehi…66AAA5swOywyP8.jpg!op_type=3&columns=110&rows=110", isVip: false, vipExpiredAt: 0} // avatarUrl: "http://imgopen.xmcdn.com/storages/f999-audiofreehighqps/71/1D/GAqhF9kMAL66AAA5swOywyP8.jpg!op_type=3&columns=110&rows=110" // deviceAuthStatus: 2 // isVip: false // nickname: "听友511052575" // vipExpiredAt: 0 return isAuth; } async function autoAuth(platformId, device) { var clientType = device.clientType; var deviceMac = device.deviceMac; console.log("自动授权:", device); if ((!clientType || !deviceMac)) { console.error("自动授权1:",); return false; } var isAuth = await getAuthStatus(platformId, device); console.log("获取授权状态2:", isAuth); if (!isAuth) { var urlRes; if (platformId === EnumPlatformId.XMLY) { urlRes = await getXmlyAuthUrl(device); } else if (platformId === EnumPlatformId.QQ) { urlRes = await getQQAuthUrl(device); } // {loginUrl: "https://m.ximalaya.com/login?hide_third_login=null…/index_deviceid=MW-2AXD:AIrSMArTd031105fe3c0_null"} console.log("获取授权url:", urlRes.loginUrl); var loginUrl = urlRes.loginUrl; if (loginUrl) { // 跳转到授权页面 var path = routePath.authWeb + "?url=" + encodeURIComponent(loginUrl); wx.navigateTo({ url: path }); return null } else { return false; } } else { // 成功 return true; } } async function unbind(device, platform) { switch (platform) { case EnumPlatformId.XMLY: return await unbindXmly(device); case EnumPlatformId.QQ: return await unbindQQ(device); default: return false; } } // 内容使用权VIP会员模块 async function vipInfo(device, platformType) { var params = _params(device, EnumPlatformId.QQ); return requestUtil.request("/mini/wx/user/contentVipDetail/getDetail", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 获取QQ音乐的授权信息 1 async function isAuthQQ(device) { var params = _params(device, EnumPlatformId.QQ); return requestUtil.request("/mini/wx/auth/music/qq/authInfo", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 获取QQ音乐的授权url 2 async function getQQAuthUrl(device) { var params = _params(device, EnumPlatformId.QQ); return requestUtil.request("/mini/wx/auth/music/qq/h5AuthUrl", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 获取QQ音乐用户信息 3 async function getQQUserInfo(device) { var params = _params(device, EnumPlatformId.QQ); return requestUtil.request("/mini/wx/auth/music/qq/userInfo", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 解绑qq 4 async function unbindQQ(clientType, deviceMac, dsn, platformType) { // return requestUtil.request("/mini/wx/auth/ximalaya/unBindAccount", data, "POST", Object.assign(params, requestUtil.jsonType), true) } /// ----------以下是喜马拉雅------------------------------------------ // 获取喜马拉雅的授权信息 1 async function isAuthXmly(device) { var params = _params(device, EnumPlatformId.XMLY); return requestUtil.request("/mini/wx/auth/ximalaya/authInfo", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 获取喜马拉雅的授权url 2 async function getXmlyAuthUrl(device) { var params = _params(device, EnumPlatformId.XMLY);; return requestUtil.request("/mini/wx/auth/ximalaya/getLoginUrl", params, "POST", Object.assign(params, requestUtil.jsonType), true) } // 解绑喜马拉雅 3 async function unbindXmly(device) { var params = _params(device, EnumPlatformId.XMLY); var res = await requestUtil.request("/mini/wx/auth/ximalaya/unBindAccount", params, "POST", Object.assign(params, requestUtil.jsonType), true) console.log("解绑喜马拉雅:", res); return res === null; } function _params(device, platformType) { return { "deviceClientType": device.clientType, "deviceMac": device.deviceMac, "dsn": device.dsn, "platformType": platformType }; } module.exports = { getAuthStatus, unbind, autoAuth, EnumPlatformId, mIsAuthQQ, mIsAuthXmly, };