uni-app custom-token.js达不到想要的效果

uni-app custom-token.js达不到想要的效果

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/H5

浏览器平台:Chrome
浏览器版本:100.0.4896.88(正式版本) (64 位)


操作步骤:

已完全参考 https://uniapp.dcloud.net.cn/uniCloud/uni-id.html#custom-token

预期结果:

{
"uid": "62596dfca6a7210001a3fb05",
"needPermission": undefined,
"role": [],
"permission": [],
"自定义字段": 123
}

实际结果:

{
"uid": "62596dfca6a7210001a3fb05",
"needPermission": undefined,
"role": [],
"permission": [],
}

bug描述:

已完全参考 https://uniapp.dcloud.net.cn/uniCloud/uni-id.html#custom-token

看了源码 自定义参数也传不进来啊 为啥不在参数里加个扩展字段 想用就用

调用时:

let _newToken = await uniID.createToken({
uid: res.uid,
role: res.userInfo.role,
permission: _permission,
"自定义字段": '123',
});
3 回复

我就是在找这个问题,问了还没回复


都快25年了还没人回复,这个社区算是废了

uni-app 中使用 custom-token.js 时,如果没有达到预期的效果,可能是由于多种原因导致的。以下是一些常见的问题和解决方案,帮助你排查和解决问题:


1. 检查 custom-token.js 的引入和配置

  • 确保 custom-token.js 文件被正确引入到项目中。
  • 如果是在 uniCloud 中使用,确保该文件存放在云函数的 index.js 中或通过 module.exports 导出。
  • 检查 custom-token.js 的逻辑是否正确,例如生成 Token 的算法是否符合预期。

示例:

// custom-token.js
module.exports = function (event) {
    const token = generateToken(event.userInfo); // 生成 Token 的逻辑
    return {
        token,
        msg: 'Token generated successfully'
    };
};

2. 检查云函数的调用

  • 确保云函数被正确调用,并且传递了必要的参数。
  • 如果是通过 uniCloud.callFunction 调用云函数,检查请求参数和返回结果。

示例:

uniCloud.callFunction({
    name: 'custom-token',
    data: {
        userId: '123',
        userInfo: { /* 用户信息 */ }
    }
}).then(res => {
    console.log(res.result); // 检查返回的 Token
}).catch(err => {
    console.error(err);
});

3. 检查 Token 的生成逻辑

  • 确保生成 Token 的逻辑是正确的,例如使用 JWT 或其他加密算法。
  • 检查 Token 的过期时间、签名密钥等是否配置正确。

示例(使用 JWT):

const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';

function generateToken(userInfo) {
    return jwt.sign({
        userId: userInfo.userId,
        exp: Math.floor(Date.now() / 1000) + (60 * 60) // 1 小时过期
    }, secretKey);
}

4. 检查返回结果的格式

  • 确保 custom-token.js 返回的结果格式符合预期,例如返回一个包含 token 字段的对象。
  • 如果返回结果格式不正确,客户端可能无法正确解析。

示例:

return {
    token: generateToken(event.userInfo),
    msg: 'Token generated successfully'
};

5. 调试和日志

  • custom-token.js 中添加日志,检查每一步的执行情况。
  • 使用 console.loguniCloud.logger 打印关键信息,方便排查问题。

示例:

console.log('Generating token for user:', event.userInfo);
const token = generateToken(event.userInfo);
console.log('Generated token:', token);

6. 检查客户端代码

  • 确保客户端代码正确处理了云函数的返回结果。
  • 检查是否有错误处理逻辑,例如网络请求失败或 Token 解析失败的情况。

示例:

uniCloud.callFunction({
    name: 'custom-token',
    data: { /* 参数 */ }
}).then(res => {
    if (res.result.token) {
        uni.setStorageSync('token', res.result.token); // 存储 Token
    } else {
        console.error('Token not found in response');
    }
}).catch(err => {
    console.error('Failed to generate token:', err);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!