|
@@ -0,0 +1,174 @@
|
|
|
+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,
|
|
|
+};
|