uni-app uniID.checkToken 一直返回 jwt must be a string
uni-app uniID.checkToken 一直返回 jwt must be a string
操作步骤:
- 上面已说明
预期结果:
- 正常验证token
实际结果:
- jwt must be a string
bug描述:
用云函数路由的方式,在控制器内进行验证客户端token,但是一直返回错误
/**
* 验证客户端 token
*/
check_token() {
const uniIdToken = this.ctx.event.uniIdToken;
if (!uniIdToken) return false;
// console.log(token);
return uniID.checkToken({
token: uniIdToken,
checkTokenOptions: {
needUserInfo: false
}
}).then((res) => {
console.log(res);
return (res.code == 0) ? true : false;
})
}
uniIdToken信息
{"uniIdToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2MWZmZjY1MmQ3NGMzMjAwMDEyNzQxNGMiLCJyb2xlIjpbXSwicGVybWlzc2lvbiI6W10sImlhdCI6MTY0NDE2NDY4NiwiZXhwIjoxNjQ0MTcxODg2fQ.ZifX27O73oZZCI5WIt5aD2V7z6f-g8vmd_jK0SghjTE"}
验证结果
{"code":30204,"err":{"name":"JsonWebTokenError","message":"jwt must be a string"},"errCode":"uni-id-check-token-failed","errMsg":"token校验未通过","msg":"token校验未通过","message":"token校验未通过"}
我就纳闷儿了,这明明就是字符串啊,为什么一直提示不是字符串?
更多关于uni-app uniID.checkToken 一直返回 jwt must be a string的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
好吧,我的锅,眼瞎,参数格式写错了
更多关于uni-app uniID.checkToken 一直返回 jwt must be a string的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据你提供的代码和错误信息,问题可能出在token的传递方式上。虽然你看到的uniIdToken确实是字符串格式,但可能在传递过程中被转换了类型。
建议检查以下几点:
- 确保this.ctx.event.uniIdToken确实是字符串类型,可以在check_token方法开头添加:
console.log(typeof uniIdToken);
- 如果发现类型不是string,可以强制转换:
const uniIdToken = String(this.ctx.event.uniIdToken);
-
检查云函数调用时uniIdToken的传递方式,确保没有被JSON.stringify二次处理。
-
如果使用uniCloud.callFunction调用,确保参数传递正确:
uniCloud.callFunction({
name: 'yourFunction',
data: {
uniIdToken: token // 直接传递原始token字符串
}
})