uniCloud云函数中鉴权

71 阅读1分钟

背景

uniapp中使用uniCloud云函数,在云函数中需要检查用户是否登录,或获取用户id

实现

创建云函数后,添加依赖 uni-id-common

在云函数中添加下面的代码,可以解析请求中带过来的 uniIdToken 参数,也就是 token

const uniID = require('uni-id-common')

async function getUid(event, context) {
	try {
		const uniIDIns = uniID.createInstance({ // 创建uni-id实例
			context: context,
			// config: {} // 完整uni-id配置信息,使用config.json进行配置时无需传此参数
		})

		const payload = await uniIDIns.checkToken(event.uniIdToken) // 后续使用uniIDIns调用相关接口

		if (payload.errCode !== 0) {
			// 返回统一的登录错误
			return {
				errCode: 401,
				errMsg: '用户未登录或登录已过期',
				uid: null
			}
		}

		return {
			errCode: 0,
			errMsg: 'success',
			uid: payload.uid
		}
	} catch (error) {
		console.error('获取用户ID失败:', error);
		return {
			errCode: 401,
			errMsg: '用户未登录或登录已过期',
			uid: null
		}
	}
}