IT星空
IT星空
  • 发布:2024-12-29 11:05
  • 更新:2024-12-29 11:05
  • 阅读:69

普通云函数向opendb-verify-codes表添加数据报错“权限校验未通过,未能获取当前用户信息,当前用户为匿名身份”

分类:uni-app

报错如下:
[uni-sms/ac1cc3201735431011879105441/387ms/DEBUG] jql报错

at _callCloudFunction (/tmp/function/@common_modules/uni-cloud-jql/index.js:1:6144)  
at processTicksAndRejections (node:internal/process/task_queues:96:5) {  

errMsg: '权限校验未通过,未能获取当前用户信息,当前用户为匿名身份,请参考文档:https://uniapp.dcloud.net.cn/uniCloud/schema.html#handler-permission-error',
errCode: 'TOKEN_INVALID_ANONYMOUS_USER',
code: 'TOKEN_INVALID_ANONYMOUS_USER',
subject: undefined,
errSubject: undefined,
cause: undefined,
requestId: undefined
}

我的普通云函数的入参event对象能获取到uniIdToken,为什么会报这个错误呢,我去查看opendb-verify-codes表的dbscheme也没有permission属性的设置,我也没去修改它。

我的云函数代码如下:
// 发送单条短信示例
'use strict';
const crypto = require('crypto');
function generateCode() {
return crypto.randomInt(100000, 999999).toString();
}
const smscode = generateCode()
exports.main = async (event, context) => {
const now = Date.now()

console.log(event,context)  
const dbJQL = uniCloud.databaseForJQL({  
    event,  
    context  
});  

try {
const res = await uniCloud.sendSms({
appid: 'UNIC0640D1',
phone: event.mobile,
templateId: '33680', // 请替换为自己申请的模板id
data: {
code: smscode
}
})
console.log('test sms')
// 调用成功,请注意这时不代表发送成功
const res1 = await dbJQL.collection('opendb-verify-codes').where({
mobile: event.mobile,
status: 0,
scene: 'claim-shop'
}).orderBy('created_date desc').get({getCount:true});
console.log(res1)
if(res1.count == 0){
const res2 = await dbJQL.collection('opendb-verify-codes').add({
mobile: event.mobile,
scene: 'claim-shop',
code: smscode,
state: 0,
ip: dbJQL.getCloudEnv('$cloudEnv_clientIP'),
create_date: now,
expired_date: now + 300000
});
console.log(res2)
}
return res
} catch(err) {
// 调用失败
console.log(err.errCode)
console.log(err.errMsg)
return {
code: err.errCode,
msg: err.errMsg
}
}
};

2024-12-29 11:05 负责人:无 分享
已邀请:

要回复问题请先登录注册