阿歪绅士
阿歪绅士
  • 发布:2026-05-05 20:24
  • 更新:43 分钟前
  • 阅读:31

【报Bug】getCurrentUserInfo()报错Failed to execute 'atob' on 'Window'

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 5.08

浏览器平台: Edge

浏览器版本: 最新

项目创建方式: HBuilderX

操作步骤:

新安装的uni-starter,没问题。但是在数据库中删除新建的用户后就出现了这个问题

预期结果:

我查询的结构就是生成的token不符合atob的新规范,所有atob报错

实际结果:

vue.runtime.esm.js? [sm]:1480 Error: 获取当前用户信息出错,详细错误信息为:Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

bug描述:

uni-starter遇到这个问题,登录不成功,报vue.runtime.esm.js? [sm]:1480 Error: 获取当前用户信息出错,详细错误信息为:Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.错误。

我发现是uni-id-users数据库里的token是下面这种:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2OWY5NzliYThlNjQwMzJhMTNlZDUzYzMiLCJyb2xlIjpbIlhJQU9CVUtFVEFOR19VU0VSIl0sInBlcm1pc3Npb24iOlsiWElBT0JVS0VUQU5HX0RFVklDRV9MSVNUPFJFQUQ-IiwiWElBT0JVS0VUQU5HX0RFVklDRV9MSVNUPENSRUFURT4iLCJYSUFPQlVLRVRBTkdfREVWSUNFX0xJU1Q8VVBEQVRFPiIsIlhJQU9CVUtFVEFOR19ERVZJQ0VfTElTVDxERUxFVEU-IiwiWElBT0JVS0VUQU5HX1VTRVJfUEVSTUlTU0lPTlM8UkVBRD4iLCJYSUFPQlVLRVRBTkdfVVNFUl9QRVJNSVNTSU9OUzxDUkVBVEU-IiwiWElBT0JVS0VUQU5HX1VTRVJfUEVSTUlTU0lPTlM8VVBEQVRFPiIsIlhJQU9CVUtFVEFOR19VU0VSX1BFUk1JU1NJT05TPERFTEVURT4iXSwidW5pSWRWZXJzaW9uIjoiMS4wLjE5IiwiaWF0IjoxNzc3OTgxMTg3LCJleHAiOjE3Nzc5ODgzODd9.1qfZnjk1kygVt12fMePf5pX6ObrkvaCrRs3k4W7_i0Q

这种token在atob解析错误。

但是刷新后,localstorage里的token又变成:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2OWY5NzliYThlNjQwMzJhMTNlZDUzYzMiLCJyb2xlIjpbIlhJQU9CVUtFVEFOR19VU0VSIl0sInBlcm1pc3Npb24iOlsiWElBT0JVS0VUQU5HX0RFVklDRV9MSVNUPFJFQUQ+IiwiWElBT0JVS0VUQU5HX0RFVklDRV9MSVNUPENSRUFURT4iLCJYSUFPQlVLRVRBTkdfREVWSUNFX0xJU1Q8VVBEQVRFPiIsIlhJQU9CVUtFVEFOR19ERVZJQ0VfTElTVDxERUxFVEU+IiwiWElBT0JVS0VUQU5HX1VTRVJfUEVSTUlTU0lPTlM8UkVBRD4iLCJYSUFPQlVLRVRBTkdfVVNFUl9QRVJNSVNTSU9OUzxDUkVBVEU+IiwiWElBT0JVS0VUQU5HX1VTRVJfUEVSTUlTU0lPTlM8VVBEQVRFPiIsIlhJQU9CVUtFVEFOR19VU0VSX1BFUk1JU1NJT05TPERFTEVURT4iXSwidW5pSWRWZXJzaW9uIjoiMS4wLjE5IiwiaWF0IjoxNzc3OTgxMTg3LCJleHAiOjE3Nzc5ODgzODd9.1qfZnjk1kygVt12fMePf5pX6ObrkvaCrRs3k4W7/i0Q

这种是正确的token,可以解析。但是与uni-id-users里的token不同。token校验失败。
这是什么原因?是bug吗?

2026-05-05 20:24 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

作为DCloud官方人员,我对该bug反馈的评审如下:

一、反馈内容完整性评价

整体评价:中等偏上,关键信息有缺失

1. BUG描述分析

  • 优点:用户观察非常细致,发现了数据库中的token与localStorage中的token在签名部分存在字符差异(_ vs /),这是定位问题的关键线索
  • 不足:未说明具体的运行平台(是H5、App还是小程序?),从错误信息Failed to execute 'atob' on 'Window'看应该是H5或Web环境,但需明确确认

2. 代码示例缺失

  • 严重缺失:没有提供调用getCurrentUserInfo()的具体代码片段,也没有提供生成token的相关代码
  • 建议补充:调用该方法的上下文代码,以及是否使用了自定义的token生成逻辑

3. 复现步骤不清晰

  • 当前描述:"新安装的uni-starter,没问题。但是在数据库中删除新建的用户后就出现了这个问题"
  • 问题:删除用户后如何操作?是重新注册?还是使用旧token?步骤跳跃性太大,官方人员无法按此复现
  • 建议补充:完整的操作流程,包括登录→删除用户→重新登录→调用API的具体步骤

4. 环境信息

  • 基本完整:HBuilderX 5.08正式版、Windows 11
  • 缺失:未说明是uni-app还是uni-app-x项目,未说明运行平台(H5/App/小程序)

二、Bug有效性判断

初步判断:这是一个有效的潜在Bug,但可能是已知问题的变体

根据知识库检索结果:

  1. 历史类似问题

    • DCloud问答_132162:微信小程序平台atob is not a function问题,已在后续版本修复
    • DCloud问答_125165:uniIDHasRole方法在真机调试时atob报错,已在HBuilderX 3.2.10-alpha修复
  2. 当前问题特征

    • 错误信息是Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded,而非atob is not a function
    • 这表明atob函数存在,但传入的字符串编码不符合标准Base64规范
  3. Root Cause分析
    用户发现的token差异(_ vs /)揭示了问题本质:

    • 数据库存储的token使用了Base64URL编码(使用_-代替标准Base64的/+
    • atob函数要求的是标准Base64编码(需要/+
    • 当直接从数据库读取token(Base64URL格式)传给atob时,就会报编码错误

    根据uni-id Token文档,token是JWT格式,理论上应该统一使用Base64URL编码,但getCurrentUserInfo内部在解析时可能需要做编码转换。

三、建议与要求

立即需要补充的信息:

  1. 运行平台确认:请明确是在哪个平台出现的问题?(H5浏览器?微信小程序?App?)
  2. 完整复现步骤:请提供从项目启动到报错的最小复现路径
  3. 代码片段:请提供调用getCurrentUserInfo()的代码,以及是否直接操作了token存储
  4. uni-id版本:请提供uni-iduni-id-common的具体版本号

临时解决方案建议:

根据知识库client-sdk文档getCurrentUserInfo是客户端接口,不会发送网络请求,仅解析storage内的uni_id_token。建议检查:

  • 是否手动修改了storage中的token
  • 是否在数据库中直接修改了token字段(这会导致客户端存储的token与数据库不一致)

官方后续动作:

我们怀疑这是uni-id在特定版本(HBuilderX 5.08)中,token编码格式处理的问题。请补充上述信息后,我们将进行进一步验证。如果确认是框架问题,将在下个版本修复Base64URL到Base64的自动转换逻辑。

请优先补充:运行平台和完整的复现操作步骤。

内容为 AI 生成,仅供参考
阿歪绅士

阿歪绅士 (作者)

刚刚新下载了uni-starter。没有任何修改,只添加 "tokenSecret": "dsfgsdfgsdg",和 "userRegisterDefaultRole": ["XIAOBUKETANG_USER"]。只做了这两处设置。

阿歪绅士

阿歪绅士 (作者)

新注册用户。自动返回list页,再打开ucenter页还是未登录的状态。

阿歪绅士

阿歪绅士 (作者)

uni-id-common版本1.0.19
uni-id-pages版1.1.27
在hbuilder里运行再内部浏览器里。H5

阿歪绅士

阿歪绅士 (作者)

HBuilder版本5.0.7

阿歪绅士

阿歪绅士 (作者)

我发现是支付宝云才会出现这个token问题。阿里云没有问题。应该支付宝云的uni-id-common生成token的问题

要回复问题请先登录注册