如何通过JavaScript获取localStorage中的access_token值而非id_token?
修复获取access_token值的方案
问题分析
你更新后的代码通过Object.keys()[2]仅拿到了对象的第3个键名(对象键的顺序不固定,甚至可能不是access_token),而且没有根据键名去获取对应的值,所以无法拿到目标token。
正确实现代码
// 读取并解析localStorage中的OIDC用户对象 const oidcUser = JSON.parse(localStorage.getItem('oidc.user:https://accounts.zerotier.com/auth/realms/zerotier:zt-central')); // 直接通过标准键名获取access_token if (oidcUser?.access_token) { alert(oidcUser.access_token); } else { alert('未获取到access_token'); }
关键说明
- 不要依赖对象键的索引位置:OIDC存储对象的键顺序不保证固定,用索引取键名完全不可靠。
- 直接使用标准键名:OIDC规范中,存储的用户对象里
access_token是固定的键名,直接通过该键访问值才是稳定的方式。 - 增加空值判断:避免存储项不存在或
access_token未生成时出现JS报错。
内容的提问来源于stack exchange,提问作者asda
相关产品推荐
相关产品推荐

