环信web、uniapp、微信小程序SDK报错详解---登录篇

项目场景:

记录对接环信sdk时遇到的一系列问题,总结一下避免大家再次踩坑。这里主要针对于web、uniapp、微信小程序在对接环信sdk时遇到的问题。主要针对报错400、404、401、40
(一) 登录用户报400

原因分析:

从console控制台输出及network请求返回入手分析

可以看到报错描述invalid password,密码无效,这个时候就需要去排查一下该用户密码填写是否正确

排查思路:

因为环信不保存用户的密码,可以在console后台或者调用修改密码的restapi来修改一下密码再重新登录(修改密码目前只有这两种方式)

(二) 登录用户报404

原因分析:

从console控制台输出及network请求返回入手分析

可以看到报错描述user not found,这个时候就需要去排查一下该用户是否存在于该项目使用的appkey下了

排查思路:

可以看一下console后台拥有这个用户的appkey和自己项目初始化时用的是否是同一个,若在console后台并没有查到该用户,就要注意这个用户是否真的没有注册

(三) 登录用户报40、401

原因分析:

报错40或者401一般都是token的问题,需要排查一下token是否还在有效期,token是否是当前用户的用户token

40的报错还有一种情况,用户名密码登录需要排查用户名及密码传参是否都是string类型

注:此处需要注意用户token和apptoken两种概念
用户token指的是该用户的token,一般只用于该用户在客户端使用环信 token 登录和鉴权
app token指的是管理员权限 token,发送 HTTP 请求时需要携带 app token

token较为私密,一般不要暴露出去

排查思路:

排查用户名及密码传参是否都是string类型,这个可以直接将option传参打印出来取一下数据类型看看是否是string

关于token排查,现在没有合适的办法直接查询token是否还在有效期或者是不是当前用户的token,只能通过api调用看是否报错401,可以在console后台直接获取新的用户token来测试一下

是不是当前用户的token也可以找环信的技术支持帮忙查,但在不在有效期他们也查不了

话外:

有人遇到为什么已经open成功了但是还会报错?

这里要注意open只能证明获取到了token,证明不了已经建立了websocket连接,只有触发onOpened或者onConnected回调 只有onOpened或者onConnected回调触发,才算真正与环信建立连接。所以也不能在open返回的success或者.then中做任何逻辑处理,此外还要注意监听回调一定要放在调用api之前,在调用任何一个api时都要保证监听挂载完毕,包括open

如何判断自己是否在登录状态

可以用以下三种方法中的一种判断当前用户是否在登录状态~

1、WebIM.conn方法下有一个logOut字段,该字段为true时表明未登录状态,该字段为false时表明登录;

2、WebIM.conn.isOpened () 方法有三个状态,undefined为未登录状态,true为已登录状态,false为未登录状态,可以根据这三个状态去判断是否登录;

3、通过onOpened 这个回调来判断,只要执行了就说明登录成功了,输出的话,输出的是undefined

三者选其一判断登录状态

相关推荐
掘金一周18 分钟前
想问问掘友们:AI 时代,资深开发的核心价值到底在哪里?| 沸点周刊 7.23
前端·人工智能·后端
橘子星27 分钟前
🚀 手把手带你写一个端侧 AI 应用的"加载进度条"与"聊天对话框"
前端·人工智能
37.2℃9951 小时前
专业的Claude Design解决方案
前端·算法
Jolyne_1 小时前
ng-zorro-table列宽resize后宽度是NaN的源码调试记录
前端
liwulin05061 小时前
【ollama】自定义结构化输出
linux·前端·数据库·ollama
前端甜糖1 小时前
记录We码开发者工具的一个bug
前端·javascript
程序员黑豆2 小时前
鸿蒙应用开发教程:以红绿灯切换为例,掌握条件渲染的核心用法
前端·harmonyos
猫3282 小时前
echarts 日常问题解决
前端·javascript·echarts
新中地GIS开发老师2 小时前
地信职业百科④:GIS开发工程师
前端·数据库·gis·webgis·三维gis开发
我是大卫2 小时前
【图】React源码解析-从数据结构、调度器、源码设计模式到状态计算引擎,深挖useReducer原理
前端·react.js·源码