loginByQQ.js 1.7 KB
Newer Older
VK1688's avatar
2.2.4  
VK1688 已提交
1
module.exports = {
VK1688's avatar
VK1688 已提交
2 3 4
	/**
	 * QQ授权登录
	 * @url user/pub/loginByQQ 前端调用的url参数地址
VK1688's avatar
2.2.4  
VK1688 已提交
5 6 7
	 * data 请求参数 说明
	 * @param {String} code QQ小程序登录返回的code
	 * @param {String} accessToken QQ APP登录返回的access_token
VK1688's avatar
2.3.0  
VK1688 已提交
8
	 * @param {String} type login:登录 register:注册
VK1688's avatar
2.2.4  
VK1688 已提交
9 10 11 12 13
	 * res 返回参数说明
	 * @param {Number} code 错误码,0表示成功
	 * @param {String} msg 详细信息
	 * @param {String} token 登录成功之后返回的token信息
	 * @param {String} tokenExpired token过期时间
VK1688's avatar
VK1688 已提交
14
	 */
VK1688's avatar
2.2.4  
VK1688 已提交
15 16
	main: async (event) => {
		let { data = {}, util, originalParam } = event;
VK1688's avatar
VK1688 已提交
17
		let { uniID, config, pubFun, vk, db, _ } = util;
VK1688's avatar
2.2.4  
VK1688 已提交
18 19 20
		let { uid } = data;
		let res = {};
		// 业务逻辑开始-----------------------------------------------------------
21 22 23 24 25 26 27 28 29 30 31 32 33 34
		let {
			code,
			accessToken,
			type,
			myInviteCode,
			needPermission
		} = data;
		res = await uniID.loginByQQ({
			code,
			accessToken,
			type,
			myInviteCode,
			needPermission
		});
VK1688's avatar
VK1688 已提交
35 36 37 38
		if (res.token) {
			if (!res.msg) {
				res.msg = res.type === "register" ? "注册成功" : "登录成功";
			}
VK1688's avatar
2.11.0  
VK1688 已提交
39 40 41 42 43
			let encrypted = vk.crypto.aes.encrypt({
				data: res
			});
			delete res.sessionKey; // 删除明文sessionKey
			delete res.accessToken; // 删除明文accessToken
VK1688's avatar
2.11.1  
VK1688 已提交
44
			delete res.refreshToken; // 删除明文refreshToken
VK1688's avatar
2.11.3  
VK1688 已提交
45
			res.encryptedKey = encrypted; // 返回前端加密内容
VK1688's avatar
2.2.4  
VK1688 已提交
46 47 48 49 50 51 52
			// 日志服务
			const loginLogService = vk.require("service/user/util/login_log");
			await loginLogService.add({
				type: "login",
				login_type: "qq",
				user_id: res.uid,
				context: originalParam.context
VK1688's avatar
VK1688 已提交
53
			}, util);
VK1688's avatar
2.2.4  
VK1688 已提交
54 55 56 57 58
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
}