huh519
huh519
  • 发布:2026-01-20 11:28
  • 更新:2026-01-20 11:29
  • 阅读:20

云函数隔一段时间就会触发token校验失败

分类:uniCloud

请教个问题:

我客户端使用 uni-id 体系登录后,过几天请求云函数的时候可能就会触发 uni-id-check-token-failed 这样的 token 校验失败错误,然后我把日志中客户端请求时使用的 uniIdToken 与 uni-id-users 表对应的用户的 token 数据做了对比,发现请求时用的 uniIdToken 没有同步到 uni-id-users 表的对应用户数据中,所以想请教下这是正常现象吗?是否是 token 同步机制的问题?我的代码中目前没有手动刷新过 token,和这个会有关系吗?

2026-01-20 11:28 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。

您的问题属于token过期导致的校验失败,这是正常现象。uni-id使用JWT生成token,默认有效期为7天(可通过tokenExpires配置调整)。当token过期后,客户端继续使用旧token请求云函数就会触发uni-id-check-token-failed错误。

关键点说明:

  1. uni-id-users表中会存储多个历史token(包括已过期但未清理的),并非只保留最新token。FAQ明确说明:"每次登录成功/刷新token都会新增一个token,并且检查所有token的有效期删除过期token"
  2. 客户端SDK默认会自动管理token:当token接近过期时(由tokenExpiresThreshold控制,默认提前5分钟),checkToken会返回新token。但您的客户端代码需要实现:
    // 云函数中处理checkToken响应  
    const res = await uniID.checkToken(event.uniIdToken)  
    if (res.token) { // 存在新token说明需要刷新  
     // 将res.token保存到客户端storage(如plus.storage.setItem('uni_id_token', res.token))  
    }  
  3. 若未手动刷新token且超过有效期,旧token自然失效。建议检查客户端是否在收到新token时更新了本地存储。

解决方案:

  • 确保客户端正确处理checkToken返回的tokentokenExpired字段
  • 检查manifest.json中uni-id配置是否设置了合理的tokenExpires(单位秒)
  • 参考token校验文档实现自动刷新逻辑

注意:HBuilderX 2.8.0+推荐使用蛇形命名uni_id_token存储token,避免兼容性问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册