应用场景:最近需要做一个用户验证的函数,由于还没有学习使用框架是直接分了多个文件夹存放不同的云函数,那么就需要跨文件夹调用云函数。
前情提要:云函数在接受前端返回数值时会获得用户登录凭证。
问题出现:当我A文件夹内的 index.js 调用B文件夹内的 index.js 内的 test函数时,根据官方文档,我们可以像前端一样调用:
// 调用B文件夹对应云函数
await uniCloud.callFunction({
name: 'uni-id-cf',
data: {
action: 'action',
params: params
}
});
实践结果可以在B文件夹内的index.js中打印传输过来的event,但是函数没有得到调用,打印返回值是 {code: 403, msg: '缺少token'},而这段返回值来自于:
const {
action,
uniIdToken
} = event;
//UNI_WYQ:这里的uniID换成新的,保证多人访问不会冲突
uniID = uniID.createInstance({
context
})
//event为客户端上传的参数
console.log('event : ' JSON.stringify(event));
console.log('context : ' JSON.stringify(context))
if (!uniIdToken) {
return {
code: 403,
msg: '缺少token'
}
}
很明显是没有得到uniIdToken,这是本应从前端传输获取的,那么最终修改是手动添加传输uniIdToken:
await uniCloud.callFunction({
name: 'uni-id-cf',
data: {
action: 'action',
params: params
uniIdToken: event.uniIdToken
}
});
虽然仍然会有提示缺少context等,但是确实是可以正常运行了。等以后有更好的解决方法了再回来更新~
0 个评论
要回复文章请先登录或注册