Przeglądaj źródła

feature:增加授权的接口方法

zeng.chen 1 dzień temu
rodzic
commit
a55de58d5f
1 zmienionych plików z 174 dodań i 0 usunięć
  1. 174 0
      utils/auth/auth_util.js

+ 174 - 0
utils/auth/auth_util.js

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