使用Quickblox JavaScript SDK发起登录/入群请求返回授权错误如何解决
QuickBlox JavaScript SDK 请求头缺失QB-Token 401错误解决方案
场景1:使用SDK原生封装接口请求
正常情况下SDK创建会话成功后会自动将token存入内部缓存,后续原生接口请求会自动携带QB-Token请求头,无需手动配置。出现缺失问题按以下步骤处理:
- 检查会话创建逻辑是否正确,不要在会话创建的异步回调完成前发起后续请求
- 若token由服务端生成后返回给前端,需手动将token写入SDK缓存:
// 初始化SDK需全局仅执行一次,重复初始化会清空已存储的token import QB from 'quickblox' QB.init(你的APP_ID, 你的AUTH_KEY, 你的AUTH_SECRET, 你的ACCOUNT_KEY) // 手动设置token到SDK缓存 QB.service.setSession({ token: '实际获取的QB-Token字符串', user_id: 对应用户的ID // 调用用户相关接口时必填 })
设置完成后所有SDK原生的登录、聊天连接、消息发送等接口都会自动携带QB-Token请求头。
场景2:自定义调用QuickBlox REST API
如果未使用SDK封装方法,自行通过axios、fetch等工具发起请求,需要手动在请求头中添加QB-Token字段:
- axios示例:
axios({ method: 'GET', url: 'https://api.quickblox.com/chat/Dialog.json', headers: { 'QB-Token': '实际获取的QB-Token字符串' } })
- fetch示例:
fetch('https://api.quickblox.com/chat/Dialog.json', { method: 'GET', headers: { 'QB-Token': '实际获取的QB-Token字符串' } })
常见问题排查
- 确保SDK全局仅初始化一次,重复执行
QB.init会清空已存储的token信息 - 跨页面、跨路由跳转场景需将token存入localStorage/sessionStorage,页面初始化时调用
QB.service.setSession重新写入SDK缓存 - 检查浏览器控制台的请求头,确认
QB-Token字段是否正常携带,若仍为空可打印QB.service.getSession()查看SDK内部是否已存储有效token
内容的提问来源于stack exchange,提问作者Hayk Shahinyan
相关产品推荐
相关产品推荐

